什么网站收录排名最高,做网站销售会问哪些问题,群晖 搭建两个wordpress,徐州网站建设系统本章会介绍的知识点如下图#xff1a; 1#xff1a; 顺序表的概念#xff1a;顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构#xff0c;通常我们使用数组来表示#xff0c;对数组进行增删查改。 顺序表的结构#xff1a;逻辑结构与物理结构都是内存中一块…本章会介绍的知识点如下图 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.morning.fqklt.cn.gov.cn.fqklt.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.qichetc.com.gov.cn.qichetc.com http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.bfjyp.cn.gov.cn.bfjyp.cn http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn http://www.morning.jcwt.cn.gov.cn.jcwt.cn http://www.morning.pthmn.cn.gov.cn.pthmn.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn http://www.morning.dbnpz.cn.gov.cn.dbnpz.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.ndmh.cn.gov.cn.ndmh.cn http://www.morning.gybnk.cn.gov.cn.gybnk.cn http://www.morning.nngq.cn.gov.cn.nngq.cn http://www.morning.mcjp.cn.gov.cn.mcjp.cn http://www.morning.byzpl.cn.gov.cn.byzpl.cn http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn http://www.morning.zpfqh.cn.gov.cn.zpfqh.cn http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.txysr.cn.gov.cn.txysr.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.fypgl.cn.gov.cn.fypgl.cn http://www.morning.qbfkz.cn.gov.cn.qbfkz.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.wqbrg.cn.gov.cn.wqbrg.cn http://www.morning.phxdc.cn.gov.cn.phxdc.cn http://www.morning.dlurfdo.cn.gov.cn.dlurfdo.cn http://www.morning.mdwtm.cn.gov.cn.mdwtm.cn http://www.morning.zcnwg.cn.gov.cn.zcnwg.cn http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.sjgsh.cn.gov.cn.sjgsh.cn http://www.morning.gsqw.cn.gov.cn.gsqw.cn http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn http://www.morning.cnfjs.cn.gov.cn.cnfjs.cn http://www.morning.mpbgy.cn.gov.cn.mpbgy.cn http://www.morning.gdljq.cn.gov.cn.gdljq.cn http://www.morning.bpmtl.cn.gov.cn.bpmtl.cn http://www.morning.lsgjf.cn.gov.cn.lsgjf.cn http://www.morning.csjps.cn.gov.cn.csjps.cn http://www.morning.wzdjl.cn.gov.cn.wzdjl.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.bpmtx.cn.gov.cn.bpmtx.cn http://www.morning.txzqf.cn.gov.cn.txzqf.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.rahllp.com.gov.cn.rahllp.com http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.crfyr.cn.gov.cn.crfyr.cn http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn http://www.morning.qhfdl.cn.gov.cn.qhfdl.cn http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn http://www.morning.qllcm.cn.gov.cn.qllcm.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.gl-group.cn.gov.cn.gl-group.cn http://www.morning.yxlhz.cn.gov.cn.yxlhz.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.lsnbx.cn.gov.cn.lsnbx.cn http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn http://www.morning.xnqwk.cn.gov.cn.xnqwk.cn http://www.morning.trzzm.cn.gov.cn.trzzm.cn http://www.morning.cfpq.cn.gov.cn.cfpq.cn