欢迎来到天天文库
浏览记录
ID:42343906
大小:476.50 KB
页数:24页
时间:2019-09-13
《数据结构作业习题答案(修订)_免费下载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章线性表2.6a.(4)(1)b.(7)(11)(8)(4)(1)c.(5)(12)d.(11)(9)(1)(6)或(11)(9)(6)(1)或(11)(9)(6)(1)2.7a.(11)(3)(4)b.(10)(12)(8)(11)(3)(14)或(10)(12)(8)(3)(14)c.(10)(12)(7)(3)(14)d.(10)(12)(13)(14)或(12)(11)(3)(14)e.(9)(11)(3)(14)2.9(1)如果L的长度不小于2,则将首元结点删去并插入到表尾。(2)voidBB():用*s所指结点的值替换*q所指结点的值。vo
2、idAA():将*pa与*pb所指结点的值交换。或将单循环链表拆成两个单循环链表2.11StatusInsertOrderList(SqList&va,ElemTypex){//在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法inti;if(va.length==va.listsize)return(OVERFLOW);for(i=va.length;i>0,x3、ListL)//求链表的长度{for(k=0,p=L;p->next;p=p->next,k++);returnk;}//LengthintListLength_L(LinkList&L){inti=0;LinkListp=L;if(p)p=p-next;while(p){p=p->next;i++;}returni;}2.21voidreverse(SqList&A)//顺序表的就地逆置{for(i=1,j=A.length;iA.elem[j];}//reverseStatusListOppose_4、Sq(SqList&L){inti;ElemTypex;for(i=0;inext;q=p->next;s=q->next;p->next=NULL;while(s->next) { q->next=p;p=q; q=s;s=s-5、>next;//把L的元素逐个插入新表表头 }q->next=p;s->next=q;L->next=s;}//LinkList_reverseStatusListOppose_L(LinkList&L){LinkListp,q;p=L;p=p->next;L->next=NULL;while(p){q=p;p=p->next;q->next=L->next;L->next=q;}returnOK;}2.24voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)//把元素递增排列的链表A和B合并为C,且C中6、元素递减排列,使用原空间{pa=A->next;pb=B->next;pre=NULL;//pa和pb分别指向A,B的当前元素 while(pa7、8、pb) { if(pa->datadata9、10、!pb) { pc=pa;q=pa->next;pa->next=pre;pa=q;//将A的元素插入新表 } else { pc=pb;q=pb->next;pb->next=pre;pb=q;//将B的元素插入新表 } pre=pc; }C=A;A->next=pc;//构造新表头}/11、/reverse_mergeStatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C){LinkListpa,pb,qa,qb;pa=A;pb=B;qa=pa;//保存pa的前驱指针qb=pb;//保存pb的前驱指针pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){if(pa->datadata){qa=pa;pa=pa->next;qa->next=A->next;//将当前最小结点插入A表表头A->next=qa;}else{q12、b=pb;pb=pb->next;qb->next=A->next
3、ListL)//求链表的长度{for(k=0,p=L;p->next;p=p->next,k++);returnk;}//LengthintListLength_L(LinkList&L){inti=0;LinkListp=L;if(p)p=p-next;while(p){p=p->next;i++;}returni;}2.21voidreverse(SqList&A)//顺序表的就地逆置{for(i=1,j=A.length;iA.elem[j];}//reverseStatusListOppose_
4、Sq(SqList&L){inti;ElemTypex;for(i=0;inext;q=p->next;s=q->next;p->next=NULL;while(s->next) { q->next=p;p=q; q=s;s=s-
5、>next;//把L的元素逐个插入新表表头 }q->next=p;s->next=q;L->next=s;}//LinkList_reverseStatusListOppose_L(LinkList&L){LinkListp,q;p=L;p=p->next;L->next=NULL;while(p){q=p;p=p->next;q->next=L->next;L->next=q;}returnOK;}2.24voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)//把元素递增排列的链表A和B合并为C,且C中
6、元素递减排列,使用原空间{pa=A->next;pb=B->next;pre=NULL;//pa和pb分别指向A,B的当前元素 while(pa
7、
8、pb) { if(pa->datadata
9、
10、!pb) { pc=pa;q=pa->next;pa->next=pre;pa=q;//将A的元素插入新表 } else { pc=pb;q=pb->next;pb->next=pre;pb=q;//将B的元素插入新表 } pre=pc; }C=A;A->next=pc;//构造新表头}/
11、/reverse_mergeStatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C){LinkListpa,pb,qa,qb;pa=A;pb=B;qa=pa;//保存pa的前驱指针qb=pb;//保存pb的前驱指针pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){if(pa->datadata){qa=pa;pa=pa->next;qa->next=A->next;//将当前最小结点插入A表表头A->next=qa;}else{q
12、b=pb;pb=pb->next;qb->next=A->next
此文档下载收益归作者所有