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

微网站如何建设方案重庆网站建设外包

微网站如何建设方案,重庆网站建设外包,网站制作 东莞,河南炒股配资网站开发本章会介绍的知识点如下图: 1: 顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构,通常我们使用数组来表示,对数组进行增删查改。 顺序表的结构:逻辑结构与物理结构都是内存中一块…

本章会介绍的知识点如下图:

 

 1: 顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构,通常我们使用数组来表示,对数组进行增删查改。

                 顺序表的结构:逻辑结构与物理结构都是内存中一块连续开辟的空间,都是11对应的线性结构。

2: 顺序表的两种定义方式:静态的顺序表与动态的顺序表,一般情况下我们很少会用静态的顺序表,因为静态的顺序表会将空间固定,导致如果我们使用顺序表的时候可能会浪费很多的空间,也可能在我们增容的时候会出现空间不够的情况,这种情况下如果我们还是在继续使用的话那么数组将会越界这种情况是error的。

两种定义顺序表的方式代码如下

        静态的顺序表        

typedef int SqListDataType;//这里是给我们的顺序表元素的类型起个名字
//							 假设元素是其他类型我们就可以修改这里
//静态的
struct SqList1
{SqListDataType arr1[1000];//开辟了一个整形的数组int size;//用来记录顺序表当前使用了多少的空间
};

动态的顺序表:

        

struct SqList2
{SqListDataType* arr2;int size;int Capacity;//用来记录当前数组开辟了多少个空间
};

在这两种结构中通常我们是会选择动态的顺序表来管理数据的。

3:顺序表的接口实现:

我们最终选择这个定义的顺序表 

        1:这个接口的定义是应为当我们在增加元素的时候我们所存储的元素会变多,总有一种情况下我们空间会慢,所以这时候我们就需要扩容,使用了realloc这个函数扩容有两种情况,一种是原地扩,一种是换个空间扩。不管怎么样我们都定义一个空间,用来存储新开辟的地址,让后在给ps

//检查容量的代码
void check_capacity(SqList* ps)
{assert(ps);//空间不够,扩容,一次扩两倍if (ps->Capacity == ps->size){SqListDataType* tmp=(SqListDataType*)realloc(ps->arr, (ps->Capacity)* 2*sizeof(SqListDataType));if (tmp == NULL){perror("realloc fail");exit(-1);}else{printf("扩容成功\n");ps->arr = tmp;ps->Capacity *= 2;}}}

2:头插思路:先检查空间是否足够,在从后往前移动元素,将第一个位置出来,最后在添加元素即可。

void PushFrontSqList(SqList* ps, SqListDataType x)
{//先检查空间够不够,空间不够扩容check_capacity(ps);//先判断空间是否满了//先移动元素int end = ps->size - 1;while (end >= 0){ps->arr[end + 1] = ps->arr[end];end--;}ps->arr[0] = x;ps->size++;
}

上述代码的意思如下图:

        

 3:尾插思路:这个挺简单的,我们只要在size位置插入即可,size在++即可,这里要注意的就是我们插入要以数组的下标。

代码:

void PushBackSqList(SqList* ps, SqListDataType x)
{assert(ps);check_capacity(ps);ps->arr[ps->size] = x;ps->size++;//SqListInsert(ps, ps->size, x);
}

 4:头删思路:我们首先得判断顺序表是否有元素,如果有的话才能进行删除,我们只需要遍历数组从前往后将后一个元素移动到前一个就行,这里需要注意的就是我们移动时位置的不同可能导致代码的不一样,而我的代码是从第一个开始所以我最后的位置因该是size-2处,然后size--就可以了。

代码:

void PopFrontSqList(SqList* ps)
{assert(ps);assert(ps->size > 0);int i = 0;for (i = 0; i < ps->size - 1; i++){ps->arr[i] = ps->arr[i + 1];}ps->size--;
}

5:尾删思路:这个挺简单的,首先还是得判断顺序表是否存在元素,如果有将size--就行了。

代码:

void PopBackSqList(SqList* ps)
{assert(ps);assert(ps->size > 0);ps->size--;
}

6:顺序表得查找思路:遍历数组就行了,如果存在则返回下标,如果不存在我们返回-1.

代码:

int FindSqList(SqList* ps, SqListDataType x)
{assert(ps);//防止ps没有意义//思路:遍历顺序表找int i = 0;for (i = 0; i < ps->size; i++){if (ps->arr[i] == x){return i;}}//未找到printf("未找到\n");return -1;
}

7:顺序表插入思路:在pos位置处插入一个元素,pos为下标,首先先我们得判断pos是否存在,如果存在我们先从前往后将元素向后移动,然后在pos位置处插入即可。

代码:

void SqListInsert(SqList* ps, int pos, SqListDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);check_capacity(ps);int end = ps->size - 1;while (end >= pos){ps->arr[end + 1] = ps->arr[end];end--;}ps->arr[pos] = x;ps->size++;
}

图:

 8:顺序表的删除思路:先判断,pos是否在顺序表中,我们只要从前完后移动pos后面的元素即可,然后我们在把size--;

代码:

void SqListErase(SqList* ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);int i = pos;for (i = pos; i < ps->size - 1; i++){ps->arr[i] = ps->arr[i + 1];}ps->size--;
}

9:顺序表的修改思路:先判断,pos是否在顺序表中,然后在根据数组随机访问的特点修改即可。

代码:

void ModifySqlist(SqList* ps, int pos, SqListDataType x)
{assert(ps);assert(pos >= 0 && pos < ps->size);ps->arr[pos] = x;}

10:打印:遍历数组即可

代码:

void SqListPrint(SqList* ps)
{assert(ps);int i = 0;for (i = 0; i < ps->size; i++){printf("%d ", ps->arr[i]);}printf("\n");
}

11:销毁顺序表这一步也不能省略,防止内存泄漏。

代码:

//销毁
void DestorySqList(SqList* ps)
{assert(ps);free(ps->arr);ps->arr = NULL;ps->Capacity = ps->size = 0;
}

以上就是顺序表的大致结构了。

通过上面我们可以发现:顺序表适合尾插,尾删,修改,这是因为顺序表随机访问的特点造成的。

        本章完,感谢大家的观看。

        

http://www.shuangfujiaoyu.com/news/32303.html

相关文章:

  • 有没有做婚车的网站免费b2b信息发布网站
  • 英文网站的建设意义app制作费用一览表
  • 南海网站建设价格怎么优化百度关键词
  • 局网站建设情况汇报罗湖区seo排名
  • web网站开发步骤宁波网站推广排名
  • 网站做推广需要什么品牌营销推广方案怎么做
  • 做徒步网站怎么样百度seo优化方案
  • 辽宁城建设计院有限公司网站汕头网站建设方案优化
  • 医疗行业网站策划公司网页制作流程
  • 万网董事长是谁网站seo收录工具
  • 网站建设和网站长沙关键词优化新报价
  • 宁波网红打卡地seo关键词推广渠道
  • 网页设计需要什么书seo系统源码
  • 南阳市建设局网站欧美网站建设
  • 伪静态 网站seo双标题软件
  • 龙岗网站-建设深圳信科在线培训app
  • 钦州网站建百度关键词快排
  • 全部浏览器下载大全南昌搜索引擎优化
  • 有什么网站是做名片印刷的商丘网络推广公司
  • 七台河新闻综合青岛网站优化公司哪家好
  • 易搜网站建设媒体邀约
  • 怎样做禁毒网站的试卷营销型网站制作企业
  • 浅蓝色.net企业网站源码带后台百度软文推广怎么做
  • 网站建设需求模板下载前端开发培训机构推荐
  • 广州建设监理协会网站3步打造seo推广方案
  • 网络工程专业毕业生设计武汉seo公司
  • java cms做网站百度主页面
  • 国家反诈中心app下载流程岳阳seo快速排名
  • wordpress db cache优化师是一份怎样的工作
  • 国外优秀网页设计欣赏关键词自动优化