2022年DS第二章_课后习题答案 .pdf
《2022年DS第二章_课后习题答案 .pdf》由会员分享,可在线阅读,更多相关《2022年DS第二章_课后习题答案 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、资料收集于网络如有侵权请联系网站删除谢谢精品文档第二章线性表2.1 填空题(1)一半插入或删除的位置(2)静态动态(3)一定不一定(4)头指针头结点的next 前一个元素的next 2.2 选择题(1)A(2)DA GKHDA EL IAF IFA(IDA)(3)D(4)D(5)D 2.3 头指针:在带头结点的链表中,头指针存储头结点的地址;在不带头结点的链表中,头指针存放第一个元素结点的地址;头结点:为了操作方便,在第一个元素结点前申请一个结点,其指针域存放第一个元素结点的地址,数据域可以什么都不放;首元素结点:第一个元素的结点。2.4 已知顺序表L 递增有序,写一算法,将X 插入到线性表的
2、适当位置上,以保持线性表的有序性。void InserList(SeqList*L,ElemType x)int i=L-last;if(L-last=MAXSIZE-1)return FALSE;/顺序表已满while(i=0&L-elemix)L-elemi+1=L-elemi;i-;L-elemi+1=x;L-last+;2.5 删除顺序表中从i 开始的 k 个元素int DelList(SeqList*L,int i,int k)int j,l;if(iL-last)printf(The Initial Position is Error!);return 0;if(k=L-last)
3、L-last=L-last-k;/*modify the length*/名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -资料收集于网络如有侵权请联系网站删除谢谢精品文档for(j=i-1,l=i+k-1;llast;j+,l+)L-elemj=L-eleml;L-last=L-last-k;return 1;2.6 已知长度为n 的线性表A 采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为 O(1)的算法,删除线性表中所有值为item 的数据元素。算法 1 void DeleteItem(SeqList*L,ElemType item)int i=0,j=L
4、-last;while(ij)while(ielemi!=item)i+;while(ielemi=item)j-;if(ielemi=L-elemj;i+;j-;L-last=i-1;算法 2 void DeleteItem(SeqList*L,ElemType e)int i,j;i=j=0;while(L-elemi!=e&ilast)i+;j=i+1;while(jlast)while(L-elemj=e&jlast)j+;if(jlast)L-elemi=L-elemj;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -资料收集于网络如有侵权请联系网站删除谢谢精
5、品文档i+;j+;L-last=i-1;2.7 编写算法,在一非递减的顺序表L 中,删除所有值相等的多余元素。要求时间复杂度为O(n),空间复杂度为O(1)。void DeleteRepeatItem(SeqList*L)int i=0,j=1;while(jlast)if(L-elemi=L-elemj)j+;else L-elemi+1=L-elemj;i+;j+;L-last=i;2.8 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink 且小于 maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。void DelDa
6、ta(LinkList L,ElemType mink,ElemType maxk)Node*p=L-next,*pre=L;while(!p&p-data next;while(p)if(p-data maxk)break;else 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -资料收集于网络如有侵权请联系网站删除谢谢精品文档 pre-next=p-next;free(p);p=pre-next;T(n)=O(n);2.9 试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a2.,an)逆置为(an,an-1,.,a1)。(1)以一维
7、数组作存储结构。(2)以单链表作存储结构。(略)(1)void ReverseArray(ElemType a,int n)int i=0,j=n-1;ElemType t;while(inext;L-next=NULL;while(p!=NULL)q=p-next;p-next=L-next;L-next=p;p=q;2.10 已知一个带有表头结点的单链表,假设链表只给出了头指针L。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k 个位置上的结点(k 为正整数)。若查找成功,算法输出该结点的data 域的值,并返回1;否则,至返回0。(提示:设置两个指针,步长为k)int
8、 SearchNode(LinkList L,int k)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -资料收集于网络如有侵权请联系网站删除谢谢精品文档Node*p=L,*q;int i=0;while(inext;if(p=NULL)return 0;/不存在倒数第k 个元素q=L-next;while(p-next!=NULL)/p到终点时,q 所指结点为倒数第k 个q=q-next;p=p-next;printf(%d,q-data);return 1;2.11 把元素递增排列的链表A 和 B 合并为 C,且 C 中元素递减排列,使用原空间。(头插法)LinkL
9、ist ReverseMerge(LinkList*A,LinkList*B)LinkList C;Node*pa=A-next,*pb=B-next;/pa和 pb 分别指向 A,B 的当前元素A-next=NULL;C=A;while(pa!=NULL&pb!=NULL)if(pa-data data)/*将 pa 的元素前插到pc 表*/temp=pa-next;pa-next=C-next;C-next=pa;pa=temp;else temp=pb-next;pb-next=C-next;C-next=pb;pb=temp;/*将 pb 的元素前插到pc 表*/while(pb!=N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年DS第二章_课后习题答案 2022 DS 第二 课后 习题 答案
限制150内