c语言学习,c语言课件第13章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法的实现似下: int insert( LIST *a , DATATYPE x, int i) *将新元素x插入在次序 表a的第i(1=i=n)个元素的前面* { int k; if(i1||(ia-size+1)||(a-size==MAXSIZE)) *如果线性 表满或i逾越范畴那么中断插入同时返回0* { printf(“position is out of range or list is full!”); return 0; } else{ for(k=a-size;k=i;k--) a-datas[k]=a-datas[k-1]; a-datas[i-1]=x; a-size++; return 1; } } 算法的时候复杂度解析: 那个算法中, 运行时候关键花在为空出插入位置所需的移动元素的次数. 假定新元素插入的位置为下标i, 那么元素的移动次数为n-i次(n为线性 表的长度a.size). 在随意任性位置插入的几率同样的前提下, 平均需要移动n2次, 即移动线性 表中一半的元素. 时候复杂度为O(n). (5)次序 表的删除 在次序 表上删除第i个元素的操纵与插入操纵同样需要移动大量元素, 需要将ai+1,ai+2,…, an按次序向前移动一个位置, 同时将 表长度减1, 算法的实现似下: int delete( LIST *a, int i) *在次序 表a中删除第i个元素* { int k; if(i1||(ia-size)||(a-size==0)) *如果线性 表空或i逾越范畴那么中断删除同时返回0* { printf(“position is of range or list is empty!”); return 0; } else { for(k=i;ka-size;k++) a-datas[k-1]=a-datas[k]; a-size--; return 1; } } 算法的时候复杂度解析: 那个算法中, 运行时候关键花在删除元素后需要将删除位置后的全部元素向前移动一个位置. 在随意任性位置删除的几率同样的前提下, 平均需要移动n2次, 即移动线性 表中一半的元素. 时候复杂度为O(n). (5)次序 表的遍历 遍历一个线性 表定是 从线性 表的第一个元素起, 按次序依次会见或输出每个元素. void traverse( LIST *a) { int i; for(i=0;ia-size;i++) printf(“%d”,a-datas[i]); printf(“\n”); } 【例13-9】从键盘输入10个整数创立一个具有10个整数的线性 表;从键盘上输入另一个值, 插入到指定位置上; 将指定位置的值删除;输出插入前、插入后和删除后的线性 表. 【思路导航】起首定义一个次序 表结构变量, 调用initlist()函数初始化该线性 表, 再循环调用insert()函数将从键盘输入的信息按次序存放到次序 表中, 为了使 表中元素的位置与输入的次序一致, 每次根基上 从尾部插入. 接着再从键盘输入另一个值, 再调用insert()函数将其插入到指定位置. 接收模块化程序假想方式, 将宏定义、次序 表结构类型定义以及各函数原型表明组织成一个源文件:f13_1,c*, 将initlist()、insert()、delete()和traverse()几个功能函数组织成另一个源文件: f13_2,c, 将主控函数组织成文件f13_3, 程序代码似下: *exam13_9* *f13_1,c* #define DATATYPE int *定义次序 表中的信息元素类型* #define MAXSIZE 100 *定义次序 表的最大容量为100* typedef struct *自定义类型* { DATATYPE datas[MAXSIZE]; *表明存放线性 表的数组* int size; *表明一个整形变量存放次序 表元素个数* }LIST; ?void initlist(LIST *a); int insert(LIST *a , DATATYPE x, int i); int delete( LIST *a, int i) void traverse(LIST *a); (续) *f13_2,c* #include c:\output\f13_1,c *将定义LIST类型的文件做包涵预操作, 看重写出完好路径* void initlist(LIST *a) *初始化函数* { a-size=0; } int inser

文档评论(0)

mestyle + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档