当前位置: 首页 > news >正文

代做备案网站安徽seo推广

代做备案网站,安徽seo推广,wordpress中文分类,做律师推广的网站有哪些数据结构的动态顺序表有以下几个操作:创建,销毁,初始化,增删查改和打印以及内存空间不够时的扩容 本文的宏定义: #define SeqTypeData int 1.动态顺序表的创建 typedef struct SeqListInit{//动态顺序表的创建SeqT…

数据结构的动态顺序表有以下几个操作:创建,销毁,初始化,增删查改和打印以及内存空间不够时的扩容

本文的宏定义:

#define SeqTypeData int

1.动态顺序表的创建

typedef struct SeqListInit{//动态顺序表的创建SeqTypeData* a;int size;//实际有效空间int capacity;//申请空间大小
}SL;

2.动态顺序表的销毁

void SeqListDestroy(SL* ps) {//顺序表销毁free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
};

值得注意的是,ps->a要赋值NULL,避免野指针的出现。

3.动态顺序表的初始化

void SeqListInit(SL* ps){//顺序表初始化ps->a = NULL;ps->capacity = ps->size = 0;
};

4.动态顺序表的增加

插入时都要判断空间是否足够,是否需要扩容,以及ps->size要加一。

(1)头插

void SeqListPushFront(SL* ps, SeqTypeData x) {//顺序表头插SeqListCheckCapacity(ps);//判断是否需要扩容//挪动数据ps->size++;for (int i = 0; i < ps->size; i++) {ps->a[ps->size - i] = ps->a[ps->size - i - 1];}ps->a[0] = x;
}

头插也就是把数据都向后挪一位,再给第一位赋值。

(2)尾插

void SeqListPushBack(SL* ps, SeqTypeData x) {//顺序表尾插SeqListCheckCapacity(ps);//判断是否需要扩容ps->a[ps->size++] = x;
}

(3)任意位置插入

void SeqListInsert(SL* ps, int adr, SeqTypeData x)//adr为逻辑地址,等于数组下标加一
{if (adr > (ps->size + 1) || adr < 1){printf("adr invalid\n");return;}SeqListCheckCapacity(ps);//判断是否需要扩容int end = ps->size ;while (end >= adr-1){ps->a[end + 1] = ps->a[end];--end;}ps->a[adr-1] = x;ps->size++;
}

任意位置插入要记得判断插入位置的合法性,再将插入位置的数据向后移一位,再在插入位置赋值即可。

5.动态顺序表的删除

进行删除操作时,要判断表是否已经是空表,此时不可再删。删除成功时,ps->size减一。

(1)头删

void SeqListPopFront(SL* ps) {//顺序表头删if (ps->size == 0){printf("顺序表为空,不可再删\n");}else{for (int i = 0; i < ps->size; i++) {ps->a[i] = ps->a[i+1];}ps->size--;}
}

(2)尾删


void SeqListPopBack(SL* ps) {//顺序表尾删if (ps->size--);else{printf("顺序表为空,不可再删\n");}
}

(3)任意位置删除

void SeqListErase(SL* ps, int adr) {if (ps->size == 0){printf("顺序表为空,不可再删\n");}if (adr > (ps->size + 1)){printf("删除位置错误\n");}for (int i = adr; i < ps->size; i++) {ps->a[i-1] = ps->a[i];}ps->size--;
}

任意位置的删除也要检验删除位置的合法性。

6.动态顺序表的任意位置的修改

void SeqListCheck(SL* ps, int adr, SeqTypeData x) {//adr为逻辑地址,等于数组下标加一if(adr>(ps->size+1))printf("修改位置错误\n");elseps->a[adr - 1] = x;
}

任意位置的修改也要检验删除位置的合法性。

7.顺序表的打印

void SeqListPrint(SL ps) {//顺序表打印for (int i = 0; i < ps.size; i++){printf("%d ", ps.a[i]);}
}

8.动态顺序表的扩容

void SeqListCheckCapacity(SL* ps) {//顺序表检查是否需要扩容if (ps->size == ps->capacity) {SeqTypeData newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SeqTypeData* tem = (SeqTypeData*)realloc(ps->a, newcapacity * sizeof(SeqTypeData));if (tem == NULL) {printf("realloc fail\n");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}
}

9.全部代码

#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"#include <stdio.h>
#include <stdlib.h>
#include <assert.h>void SeqListInit(SL* ps){//顺序表初始化ps->a = NULL;ps->capacity = ps->size = 0;
};void SeqListDestroy(SL* ps) {//顺序表销毁free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
};void SeqListPrint(SL ps) {//顺序表打印for (int i = 0; i < ps.size; i++){printf("%d ", ps.a[i]);}if (ps.size == 0)printf("顺序表为空");printf("\n");
}//int SeqListCapacity(SL* ps) {//
//	return ps->capacity;
//}void SeqListPushBack(SL* ps, SeqTypeData x) {//顺序表尾插SeqListCheckCapacity(ps);ps->a[ps->size++] = x;
}void SeqListPushFront(SL* ps, SeqTypeData x) {//顺序表头插SeqListCheckCapacity(ps);//挪动数据ps->size++;for (int i = 0; i < ps->size; i++) {ps->a[ps->size - i] = ps->a[ps->size - i - 1];}ps->a[0] = x;
}void SeqListCheckCapacity(SL* ps) {//顺序表检查是否需要扩容if (ps->size == ps->capacity) {SeqTypeData newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SeqTypeData* tem = (SeqTypeData*)realloc(ps->a, newcapacity * sizeof(SeqTypeData));if (tem == NULL) {printf("realloc fail\n");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}
}void SeqListPopBack(SL* ps) {//顺序表尾删if (ps->size--);else{printf("顺序表为空,不可再删\n");}
}void SeqListPopFront(SL* ps) {//顺序表头删if (ps->size == 0){printf("顺序表为空,不可再删\n");}else{for (int i = 0; i < ps->size; i++) {ps->a[i] = ps->a[i+1];}ps->size--;}
}void SeqListFind(SL ps, SeqTypeData x) {//顺序表查找/*int cnt;*/for (int i = 0; i < ps.size; i++) {if (ps.a[i] == x) {printf("%d", i + 1);//返回逻辑下标/*cnt++;*/}}/*if (cnt == 0)printf("没有这个数字");*/
}void SeqListInsert(SL* ps, int adr, SeqTypeData x)//adr为逻辑地址,等于数组下标加一
{if (adr > (ps->size + 1) || adr < 1){printf("adr invalid\n");return;}SeqListCheckCapacity(ps);int end = ps->size ;while (end >= adr-1){ps->a[end + 1] = ps->a[end];--end;}ps->a[adr-1] = x;ps->size++;
}void SeqListErase(SL* ps, int adr) {//adr为逻辑地址,等于数组下标加一if (ps->size == 0){printf("顺序表为空,不可再删\n");}if (adr > (ps->size + 1)){printf("删除位置错误\n");}for (int i = adr; i < ps->size; i++) {ps->a[i-1] = ps->a[i];}ps->size--;
}void SeqListCheck(SL* ps, int adr, SeqTypeData x) {if(adr>(ps->size+1))printf("修改位置错误\n");elseps->a[adr - 1] = x;
}void menu()
{printf("请选择\n");printf("********1.头插  2.尾插********\n");printf("********3.头删  4.尾删********\n");printf("********5.随插  6.随删********\n");printf("********7.查找  8.打印********\n");printf("********9.修改  0.退出********\n");printf("请选择\n");
}int main()
{int input;SL ps;SeqTypeData x;int adr;SeqListInit(&ps);do {menu();scanf("%d", &input);switch (input){case 1:printf("请输入头插数字\n");scanf("%d", &x);SeqListPushFront(&ps, x);break;case 2:printf("请输入尾插数字\n");scanf("%d", &x);SeqListPushBack(&ps, x);break;case 3:SeqListPopFront(&ps);break;case 4:SeqListPopBack(&ps);break;case 5:printf("请输入插入位置和数字\n");scanf("%d%d", &adr, &x);SeqListInsert(&ps, adr, x);break;case 6:printf("请输入删除位置\n");scanf("%d", &adr);SeqListErase(&ps, adr);break;case 7:printf("请输入查找数字\n");scanf("%d", &x);SeqListFind(ps, x);break;case 8:SeqListPrint(ps);break;case 9:printf("请输入修改位置和数字\n");scanf("%d%d", &adr, &x);SeqListCheck(&ps, adr, x);break;case 0:printf("正在退出中");break;}} while (input);return 0;
}

10.效果展示

由于图片大小问题,只展示了部分功能。

http://www.mnyf.cn/news/49518.html

相关文章:

  • 青岛今日头条新闻消息网站关键词优化的价格
  • 网站 售后服务2022最新小学生新闻
  • 网站开发前调查seo外包 靠谱
  • 网站备案号怎么申请网上怎么找客户资源
  • 重庆规模最大的建网站公司360建站和凡科哪个好
  • 厦门安能建设品牌网站建设全网营销系统
  • 深圳网站建设价钱软文内容
  • 如何做行业平台网站湖南网站营销推广
  • 建站视频网站优惠活动推广文案
  • 长沙正规企业网站制作平台班级优化大师官网
  • 互联网培训学校哪个好长沙 建站优化
  • 贵州 网站建设百度推广怎么弄
  • 使用织梦系统建设网站百度知道首页官网
  • 蚌山网站建设seo网站优化系统
  • 做电影网站哪个系统好北京网站优化方法
  • 高端网站建设 来磐石网络惠州seo关键字优化
  • 企业网站设计请示免费发布信息的网站平台
  • 网站建设说课ppt短视频拍摄剪辑培训班
  • 外贸网站建设经验百度知道电脑版网页入口
  • 深圳模板网站建设怎么进行网站推广
  • 网站 主营业务seo入门教程视频
  • wordpress教程全集(入门到精通)如何做好网站推广优化
  • 有哪些做婚礼平面设计的网站有哪些网站关键字优化技巧
  • diango是做网站的后端吗长沙百度网站排名优化
  • jquery 网站缩放百度信息流是什么
  • 怎么在网站备案号码上加一个工信部链接地址泰州网站排名seo
  • 2017 如何做网站优化天津最新消息今天
  • wordpress投票系统孝感seo
  • 评价一个网站的好坏如何注册网站免费注册
  • 政府网站方案书佛山做网站建设