第3次-第2章-线性表及其顺序存储讲解.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(2)void sprit(seqlist *l1,seqlist *l2, seqlist *l3) 将有序顺序表l1分裂成两个线性表l2与l3,l2由表中所有奇数组成,l3由所有偶数组成。 void sprit(sequence_list *L1,sequence_list *L2, sequence_list *L3) { int i=0,j=0,k=0; while(iL1-size) { if(L1-a[i]%2==0) L3-a[k++]=L1-a[i++]; else L2-a[j++]=L1-a[i++]; } L2-size=j; L3-size=k; } (3)void merge(seqlist *l1,seqlist *l2, seqlist *l3) 将有序顺序表L1与L2合并成有序顺序表L3。 void merge(sequence_list *L1,sequence_list *L2,sequence_list *L3) { int i=0,j=0,k=0; while ((i=L1-size-1) (j=L2-size-1)) if (L1-a[i]L2-a[j]) L3-a[k++]=L1-a[i++]; else L3-a[k++]=L2-a[j++]; while (i=L1-size-1) /*处理l1中剩余元素*/ L3-a[k++]=L1-a[i++]; while (j=L2-size-1) /*处理l2中剩余元素*/ L3-a[k++]=L2-a[j++]; L3-size=k; /*置线性表l3长度*/ } 4.假设顺序表la与lb分别存放两个整数集合,函数inter(seqlist *la,seqlist *lb,seqlist *lc)的功能是实现求顺序表la与lb的交集存放到顺序表lc中,请将函数补充完整。 void inter(sequence_list *la,sequence_list *lb,sequence_list *lc) { int i=0,j=0,k=0; for(i=0;ila-size;i++) for(j=0;jlb-size;j++) { if(la-a[i]==lb-a[j]) { lc-a[k++]=la-a[i++];break;} } lc-size=k; } 5、设计一个算法将一个顺序线性表中的所有奇数集中到数组的左边,所有的偶数集中到数组的右边,要求算法的时间复杂度为O(n)。 void partion(sequence_list *L) { int i=0,j=L-size-1; datatype t; while(ij) { while(L-a[i]%2!=0) i++; while(L-a[j]%2==0) j--; t=L-a[i]; //交换 L-a[i]=L-a[j]; L-a[j]=t; i++; j--; } } 线性表有两种存储结构: 1.顺序存储—顺序表 2.链式存储-链表 * * 6y * 2.4.2顺序队列及其实现 队列的顺序存储在C语言中可以用一维数组表示,为了标识队首和队尾,需要附设两个指针front和rear,front指示的是队列中最前面,即队首结点在数组中元素的下标,rear指示的是队尾结点在数组中元素的下标的下一个位置,也就是说rear指示的是即将插入的结点在数组中的下标。 队列的几种状态 : 队首、队尾指针 front rear 数组下标 0 1 MAXSIZE-1 (a)初始状态---空队列 A B 队首、队尾指针 front rear 数组下标 0 1 MAXSIZE-1 (b)连续插入几个结点后的状态 D C 队首、队尾指针 front rear 数组下标

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档