数据结构线性表.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构线性表

在指定结点情况下进行插入运算 后插: ① s=( LinkList *)malloc(sizeof(LinkList)); ② s-data=x; ③ s-next=p-next; ④ p-next=s; 前插: ① s=( LinkList *)malloc(sizeof(LinkList)); ② s-data=x; ③ while (q-next!=p ) q = q -next; ④ s-next=p; ⑤ q-next=s; 在指定结点时后插运算的C函数如下: void insertElemAfNode (LinkList * p, DataType x) /*在带头结点的单链表L中p所指的结点后插入值为x的元素*/ { LinkList *s; s=( LinkList *)malloc(sizeof(LinkList)); s-data=x; s-next=p-next; p-next=s; } 后插算法的时间复杂度为O(1)。 在指定结点时前插运算的C函数如下: void insertElemBeNode ( LinkList *L, LinkList * p, DataType x) /*在带头结点的单链表L中p所指的结点前插入值为x的元素*/ { LinkList * q,*s; s=( LinkList *)malloc(sizeof(LinkList)); s-data=x; q=L; /*从头结点开始查找结点p的前趋结点q */ while (q-next!=p ) q = q -next; s-next=p; q-next=s; } 平均时间复杂度为O(n) 在指定位置情况下进行插入运算 若已知结点序号i,在第i个结点后或前插入一个数据元素x, 也就是在元素ai前或后插入元素x,即为给定位置的插入运算。 在第i个结点前插入一个数据元素x的实现过程 在第i个结点前进行插入运算的C函数如下: int insertElem ( LinkList *L, int i, DataType x) /*在带头结点的单链表L中第i个元素前插入值为x的元素*/ { LinkList * p,*s; int j; p=L; j=0; while (p ji-1 ) { p=p-next; j=j+1; } /*查找第i-1个结点的地址*/ if ((!p)||(ji-1)) /* i小于1或大于表长+1*/ { printf(error);return 0; } s=(LinkList *)malloc(sizeof(LinkList)); /*申请结点存储空间*/ s-data=x; /*给结点数据域赋值*/ s-next=p-next; p-next=s; /*新结点插入在第i-1个结点后面*/ return 1; } 在等概率情况下,时间复杂度为O(n)。 例2.2 在带头结点的单链表中值为y的结点前插入值为x的结点。 int inserty_x ( LinkList *L, DataType y, DataType x) /*在带头结点的单链表L中值为y的结点前插入值为x的结点*/ { LinkList * p,*q,*s; /* 结点*q为*p的前趋结点*/ p=L-next; q=L; while (p p-data!=y ) /*查找值为y的结点及前趋点的地址*/ { q=p; p=p-next; } if (!p) /*链表中无值为y的结点*/ { printf("error"); return 0; } s=( LinkList *)malloc(sizeof(LinkList)); /*申请结点存储空间*/ s-d

文档评论(0)

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

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

1亿VIP精品文档

相关文档