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

辽宁城建设计院有限公司网站个人建站赚钱

辽宁城建设计院有限公司网站,个人建站赚钱,python前端开发需要学哪些东西,儿童教育类网站模板下载本期我们来实现数据结构的顺序表#xff08;这个之前写过一次#xff0c;不过本期和之前可能会略有不同#xff0c;但大体相同#xff09;#xff0c;大家可以看一下我们之前完成的顺序表 (6条消息) 顺序表及其多种接口的实现_顺序表类中实现接口方法_KLZUQ的博客-CSDN博客…本期我们来实现数据结构的顺序表这个之前写过一次不过本期和之前可能会略有不同但大体相同大家可以看一下我们之前完成的顺序表 (6条消息) 顺序表及其多种接口的实现_顺序表类中实现接口方法_KLZUQ的博客-CSDN博客 目录 顺序表的结构 顺序表的初始化 顺序表的销毁 尾插 尾删 打印顺序表的元素 扩容 头插 头删 任意位置插入 任意位置删除 查找 realloc相关知识 完整代码 我们继续用工程化的写法来保证好的代码习惯 顺序表的结构 我们仍然是先写出顺序表的结构 typedef int SLDataType; #define INIT_CAPACITY 10 //初始容量 typedef struct SeqList {SLDataType* a;int size;//有效数据个数 int capacity;//空间容量 }SL; 因为顺序表大小的原因开多了浪费开少了不够用所以我们需要定义一些变量来帮助我们对顺序表的大小进行调整 顺序表的初始化 void SLInit(SL* ps) {//初始化assert(ps);ps-a (SLDataType*)malloc(sizeof(SLDataType) * INIT_CAPACITY);if (ps-a NULL) {perror(malloc fail);return;}ps-size 0;ps-capacity INIT_CAPACITY; } 初始化参数我们需要传顺序表这个结构体的指针然后使用malloc开辟空间给顺序表这个空间就是我们用来存储数据的同时我们要判断是否开辟成功失败时我们用perror来返回错误信息即可开辟成功后我们将有效数据个数置0容量置为我们设置的初始容量 第一行的断言是因为我们传入的是顺序表这个结构体的指针是不可能为空的所以需要断言而顺序表里的内容是否为空是由size来进行决定的 顺序表的销毁 void SLDestory(SL* ps) {//销毁assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-size 0; } 顺序表的销毁我们free的是ps-a而不是直接free掉ps然后我们将ps置为空即可 尾插 void SLPushBack(SL* ps, SLDataType x)//尾插 {assert(ps);if (ps-size ps-capacity) {//扩容SLDataType* tmp (SLDataType*)realloc(ps-a, ps-capacity * 2*sizeof(SLDataType));if (tmp NULL) {perror(realloc fail);return;}ps-a tmp;ps-capacity * 2;}ps-a[ps-size] x; } 尾插前我们需要对容量进行判断如果不够就需要先扩容我们这里扩容扩二倍接着把数据放入数组里即可我们的size是从0开始的也就是说size的位置是我们当前存放数据最后一个的下一个位置 尾删 void SLPopBack(SL* ps)//尾删 {assert(ps);//严格的判断//assert(ps-size0);//温柔的判断if (ps-size 0) {return;}ps-size--; } 因为是顺序表我们使用size来控制当前数据个数所以直接size-1即可我们不需要将这里的数据置为0因为没有必要而且我们也不能释放空间因为这是数组是连续的空间当然在删除数据前我们要先判断数组是否为空这里我们有两种方法一种是用assert直接断言另一种是当作无事发生更推荐assert一些 打印顺序表的元素 有了尾插尾删我们需要对程序进行测试所以我们对顺序表的元素进行打印 void SLPrint(SL* ps) {//打印assert(ps);for (int i 0; i ps-size; i) {printf(%d-, ps-a[i]);}printf(NULL\n); } 扩容 我们在写头插时发现插入都需要先判断是否需要扩容所以我们把扩容代码提取出来封装为一个函数方便后续使用 void SLCheckCapaicty(SL* ps)//扩容 {assert(ps);if (ps-size ps-capacity) {//扩容SLDataType* tmp (SLDataType*)realloc(ps-a, ps-capacity * 2 * sizeof(SLDataType));if (tmp NULL) {perror(realloc fail);return;}ps-a tmp;ps-capacity * 2;} } 头插 void SLPushFront(SL* ps, SLDataType x)//头插 {assert(ps);SLCheckCapaicty(ps);int end ps-size - 1;while (end0) {ps-a[end 1] ps-a[end];--end;}ps-a[0] x;ps-size; } 头插的效率不高需要挪动后续所有元素如果有n个元素我们要插入n个元素时间复杂度就是n^2了而尾插n个数据的数据复杂度是n这是非常恐怖的比如我们要插入1w个数据那么头插就是1w*1w了而尾插是1w所以我们要避免使用头插 头删 void SLPopFront(SL* ps)//头删 {assert(ps);assert(ps-size 0);int begin 1;while (begin ps-size) {ps-a[begin - 1] ps-a[begin];begin;}ps-size--; } 如果size为0那么顺序表为空不能进行删除删除时我们只需将a[0]之后的元素向前挪动即可接着size-1同样的头删的效率也很低时间复杂度也是n^2所以我们也要少用头删 任意位置插入 void SLInsert(SL* ps, int pos, SLDataType x)//任意位置插入 {assert(ps);assert(pos0 posps-size);SLCheckCapaicty(ps);int end ps-size - 1;while (endpos) {ps-a[end 1] ps-a[end];--end;}ps-a[pos] x;ps-size; } 如果我们想在顺序表中间某个位置插入就可以使用该函数因为是插入所以也需要先判断是否需要扩容另外我们传入的pos是位置所以要符合顺序表元素的个数所以要断言一下下面的插入代码和头插几乎一样 任意位置删除 void SLErase(SL* ps, int pos)//任意位置删除 {assert(ps);assert(pos 0 pos ps-size);int begin pos 1;while (begin ps-size) {ps-a[begin - 1] ps-a[begin];begin;}ps-size--; } 这里的断言和任意位置插入稍有不同我们发现posps-szie而不能等于而且我们不需要检查size是否大于0因为pos会间接检查因为size不可能为负数而pos要大于等于0 查找 int SLFind(SL* ps, SLDataType x)//查找 {assert(ps);for (int i 0; i ps-size; i) {if (ps-a[i] x) {return i;}}return -1; } 任意位置的插入和删除一般是配合查找来使用的查找返回的是下标找不到时返回-1 realloc相关知识 最后我们在补充一点其他的只是我们的顺序表扩容时使用了realloc函数而realloc函数分配空间扩容会分为两种一种是原地扩容另一种是异地扩容原地扩容就是将当前位置的后续空间使用权也分配给我们而异地扩容则是新找了一块空间将使用权分配给我们然后把原来的空间使用权归还给操作系统当我们扩容小的时候一般是原地扩容但是当扩容次数较多时后续空间会不足就会进行异地扩容找一块更大的空间给我们异地扩容的效率是比原地扩容低很多的异地扩容不仅要找一块新的空间还要把原空间里的数据给拷贝过来再释放原空间 完整代码 最后在这里附上全部代码 #includestdio.h #includestdlib.h #includeassert.htypedef int SLDataType; #define INIT_CAPACITY 10 //初始容量 typedef struct SeqList {SLDataType* a;int size;//有效数据个数 int capacity;//空间容量 }SL;void SLInit(SL* ps);//初始化 void SLDestory(SL* ps);//销毁 void SLPrint(SL* ps);//打印 void SLPushBack(SL* ps,SLDataType x);//尾插 void SLPushFront(SL* ps, SLDataType x);//头插 void SLPopBack(SL* ps);//尾删 void SLPopFront(SL* ps);//头删 void SLCheckCapaicty(SL* ps);//扩容 void SLInsert(SL* ps, int pos, SLDataType x);//任意位置插入 void SLErase(SL* ps, int pos);//任意位置删除 int SLFind(SL* ps, SLDataType x);//查找 #include SeqList.hvoid SLInit(SL* ps) {//初始化assert(ps);ps-a (SLDataType*)malloc(sizeof(SLDataType) * INIT_CAPACITY);if (ps-a NULL) {perror(malloc fail);return;}ps-size 0;ps-capacity INIT_CAPACITY; }void SLCheckCapaicty(SL* ps)//扩容 {assert(ps);if (ps-size ps-capacity) {//扩容SLDataType* tmp (SLDataType*)realloc(ps-a, ps-capacity * 2 * sizeof(SLDataType));if (tmp NULL) {perror(realloc fail);return;}ps-a tmp;ps-capacity * 2;} }void SLPrint(SL* ps) {//打印assert(ps);for (int i 0; i ps-size; i) {printf(%d-, ps-a[i]);}printf(NULL\n); }void SLDestory(SL* ps) {//销毁assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-size 0; }void SLPushBack(SL* ps, SLDataType x)//尾插 {assert(ps);SLCheckCapaicty(ps);ps-a[ps-size] x; } void SLPushFront(SL* ps, SLDataType x)//头插 {assert(ps);SLCheckCapaicty(ps);int end ps-size - 1;while (end0) {ps-a[end 1] ps-a[end];--end;}ps-a[0] x;ps-size; } void SLPopBack(SL* ps)//尾删 {assert(ps);//严格的判断assert(ps-size0);//温柔的判断/*if (ps-size 0) {return;}*/ps-size--; } void SLPopFront(SL* ps)//头删 {assert(ps);assert(ps-size 0);int begin 1;while (begin ps-size) {ps-a[begin - 1] ps-a[begin];begin;}ps-size--; }int SLFind(SL* ps, SLDataType x)//查找 {assert(ps);for (int i 0; i ps-size; i) {if (ps-a[i] x) {return i;}}return -1; }void SLInsert(SL* ps, int pos, SLDataType x)//任意位置插入 {assert(ps);assert(pos0 posps-size);SLCheckCapaicty(ps);int end ps-size - 1;while (endpos) {ps-a[end 1] ps-a[end];--end;}ps-a[pos] x;ps-size; } void SLErase(SL* ps, int pos)//任意位置删除 {assert(ps);assert(pos 0 pos ps-size);int begin pos 1;while (begin ps-size) {ps-a[begin - 1] ps-a[begin];begin;}ps-size--; } 以上就是本期全部内容希望大家可以有所收获 如有错误还请指正
文章转载自:
http://www.morning.zryf.cn.gov.cn.zryf.cn
http://www.morning.msgcj.cn.gov.cn.msgcj.cn
http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn
http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn
http://www.morning.yltyz.cn.gov.cn.yltyz.cn
http://www.morning.jikuxy.com.gov.cn.jikuxy.com
http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn
http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn
http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn
http://www.morning.jsrnf.cn.gov.cn.jsrnf.cn
http://www.morning.bjndc.com.gov.cn.bjndc.com
http://www.morning.brlgf.cn.gov.cn.brlgf.cn
http://www.morning.nypgb.cn.gov.cn.nypgb.cn
http://www.morning.zdgp.cn.gov.cn.zdgp.cn
http://www.morning.rpkl.cn.gov.cn.rpkl.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn
http://www.morning.flhnd.cn.gov.cn.flhnd.cn
http://www.morning.yltyr.cn.gov.cn.yltyr.cn
http://www.morning.dlrsjc.com.gov.cn.dlrsjc.com
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn
http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn
http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn
http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn
http://www.morning.qxrct.cn.gov.cn.qxrct.cn
http://www.morning.blqgc.cn.gov.cn.blqgc.cn
http://www.morning.yhpq.cn.gov.cn.yhpq.cn
http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn
http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn
http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn
http://www.morning.gkxyy.cn.gov.cn.gkxyy.cn
http://www.morning.nlkm.cn.gov.cn.nlkm.cn
http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn
http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn
http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn
http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn
http://www.morning.yrjkp.cn.gov.cn.yrjkp.cn
http://www.morning.lqklf.cn.gov.cn.lqklf.cn
http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn
http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn
http://www.morning.rmxk.cn.gov.cn.rmxk.cn
http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn
http://www.morning.rryny.cn.gov.cn.rryny.cn
http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn
http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn
http://www.morning.rqlzz.cn.gov.cn.rqlzz.cn
http://www.morning.rkck.cn.gov.cn.rkck.cn
http://www.morning.sknbb.cn.gov.cn.sknbb.cn
http://www.morning.txmlg.cn.gov.cn.txmlg.cn
http://www.morning.nzxdz.cn.gov.cn.nzxdz.cn
http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn
http://www.morning.nxkyr.cn.gov.cn.nxkyr.cn
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn
http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.txqsm.cn.gov.cn.txqsm.cn
http://www.morning.ldnrf.cn.gov.cn.ldnrf.cn
http://www.morning.lmfxq.cn.gov.cn.lmfxq.cn
http://www.morning.brwnd.cn.gov.cn.brwnd.cn
http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn
http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn
http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn
http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn
http://www.morning.mqfw.cn.gov.cn.mqfw.cn
http://www.morning.bgqr.cn.gov.cn.bgqr.cn
http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn
http://www.morning.rwzmz.cn.gov.cn.rwzmz.cn
http://www.morning.rqlzz.cn.gov.cn.rqlzz.cn
http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn
http://www.morning.gftnx.cn.gov.cn.gftnx.cn
http://www.morning.qsy39.cn.gov.cn.qsy39.cn
http://www.morning.kztts.cn.gov.cn.kztts.cn
http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn
http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn
http://www.morning.xbxks.cn.gov.cn.xbxks.cn
http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn
http://www.morning.c7623.cn.gov.cn.c7623.cn
http://www.morning.jlqn.cn.gov.cn.jlqn.cn
http://www.tj-hxxt.cn/news/253625.html

相关文章:

  • 响应式网站建站工具Wordpress电脑版需要下载吗
  • 软件 开发公司唐山网站关键词优化
  • 有没有免费的网站服务器网络运营商远端无响应怎么解决
  • 网站建设落地页源码如何做网站产品经理
  • 有哪些调查网站可以做兼职中山最好的网站建设公司哪家好
  • 烟台网站建设策划方案做网站要哪些人员
  • 58同城北京网站建设wordpress繁体版
  • 公司网站网页菏泽 网站建设
  • 那个网站做代买如何检测网站开发商留有后门
  • 深圳网站维护服务的公司wordpress 短视频
  • 汕尾手机网站设计图书馆网站建设情况汇报
  • 石家庄网站建设推广电话专业做网站电话
  • 电子商务网站建设课程做精美得ppt网站知乎
  • 建网站公建网站公司长春做网络推广的公司
  • 自助建站免费永久做哪个网站的直播好
  • 海口顶尖网站建设销售珍珠网站建设策划书
  • 建站素材网站模板昆明软件开发公司排名
  • 怎么做网站的跳转威海电子商务网站建设
  • dw做网站的流程app开发公司需要多少人
  • html个人网站完整代码常用知名购物网站
  • 做微商自己建网站合适吗盛大游戏优化大师
  • 网站建设需要哪些的ps极简主题wordpress
  • 个人网站有什么内容青岛房产网二手房最新信息
  • 企业网站建设服务电话聚美优品一个专注于做特价的网站
  • 做写字楼租赁用什么网站好手机创建微信公众号
  • 手机如何建免费网站有哪些公众号是小黄油的
  • 南阳网站推广公司wordpress多张产品图片
  • 购物网站后台设计网络研发工程师
  • 辽宁省工程招投标信息网优化方案2021版英语答案
  • 人工智能网站建设廊坊网站建设精灵