数据结构作业系统-第二章答案.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构作业系统-第二章答案.doc》由会员分享,可在线阅读,更多相关《数据结构作业系统-第二章答案.doc(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date数据结构作业系统-第二章答案数据结构作业系统-第二章答案2.11 设顺序表L中的数据元素递增有序。试写一算法,将x插入到L的适当位置上,并保持该表的有序性。要求实现下列函数:void InsertOrderList(SqList &L, ElemType x)/* 在有序的顺序表 L 中保序插入数据元素 x */顺序表类型定义如下:typedef struct Ele
2、mType *elem; int length; int listsize; SqList;void InsertOrderList(SqList &L, ElemType x)/ 在有序的顺序表 L 中保序插入数据元素 x int i=0,j; while(L.elemixⅈj-) L.elemj=L.elemj-1; L.elemi=x; L.length+=1;2.12 设A=(a1,am)和B=(b1,bn)均为有序顺序表,A和B分别为A和B中除去最大共同前缀后的子表(例如,A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大的共同前缀为(x,y,
3、y,z), 在两表中除去最大共同前缀后的子表分别为A=(x,z)和B=(y,x,x,z))。若A=B=空表,则A=B;若A=空表,而B 空表,或者两者均不为空表,且A的首元小于B的首元,则AB。试写一个比较A和B大小的算法。(注意:在算法中,不要破坏原表A和B,也不一定先求得A和B才进行比较)。要求实现下列函数:char Compare(SqList A, SqList B);/* 比较顺序表A和B, */* 返回, 若A, 若AB */顺序表类型定义如下:typedef struct ElemType *elem; int length; int listsize; SqList;char
4、Compare(SqList A, SqList B)/ 比较顺序表A和B, / 返回, 若A, 若AB int i=0; while(A.elemi=B.elemi&iA.length&iB.length) i+; if(i=A.length&i=B.length) return =; else if(A.elemiB.elemi|i=A.length) return B.elemi|i=B.length) return ; 2.13 试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x)。实现下列函数:LinkList Locate(LinkList L, ElemType
5、 x);/ If x in the linked list whose head node is pointed / by L, then return pointer pointing node x, / otherwise return NULL单链表类型定义如下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;LinkList Locate(LinkList &L, ElemType x)/ If x in the linked list whose head node is pointed
6、/ by L, then return pointer ha pointing node x,/ otherwise return NULL LinkList p; int i=0; p=L-next; while(p-data!=x&p!=NULL) i+; p=p-next; return p; 2.14 试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。实现下列函数:int Length(LinkList L);/ Return the length of the linked list / whose head node is pointed by L单链表类型定义如
7、下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;int Length(LinkList L)/ Return the length of the linked list / whose head node is pointed by L LinkList p; int i=0; p=L-next; while(p!=NULL) i+; p=p-next; return i;2.17 试写一算法,在无头结点的动态单链表上实现线性表操作INSERT(L,i,b),并和在带头结点的动态单链表上实现相
8、同操作的算法进行比较。实现下列函数:void Insert(LinkList &L, int i, ElemType b);单链表类型定义如下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;void Insert(LinkList &L, int i, ElemType b) LinkList p,q; int j=2; p=L; while(jnext; if(i!=0&i!=1) q=(LinkList)malloc(sizeof(LNode); q-data=b; q-next=p-nex
9、t; p-next=q; if(i=1) q=(LinkList)malloc(sizeof(LNode); q-data=b; q-next=p; L=q; 2.18 同2.17题要求。试写一算法,实现线性表操作DELETE(L,i)。实现下列函数:void Delete(LinkList &L, int i);单链表类型定义如下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;void Delete(LinkList &L, int i) LinkList p,q; int j=2; p=L;
10、 while(jnext; if(i!=0&i!=1) q=p-next; p-next=q-next; free(q); if(i=1) q=L; L=L-next; free(q); 2.20 同2.19题条件,试写一高效的算法,删除表中所有值相同的多余元素 (使得操作后的线性表中所有元素的值均不相同) 同时释放被删结点空间,并分析你的算法的时间复杂度。实现下列函数:void Purge(LinkList &L);单链表类型定义如下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;void P
11、urge(LinkList &L) LinkList p,q; int i=0; p=L; while(p!=NULL&p-next!=NULL) if(p-data=p-next-data) q=p-next; p-next=q-next; free(q); else p=p-next; 2.21 试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,an)逆置为(an,an-1,a1)。实现下列函数:void Inverse(SqList &L);顺序表类型定义如下:typedef struct ElemType *elem; int length; int list
12、size; SqList;void Inverse(SqList &L) int i=0,j=0; i=L.length/2; for(j=0;jnext; while(p-next!=NULL) k=q; q=p-next; p-next=q-next; q-next=k; L-next=q;2.23 设线性表A=(a1,.,am), B=(b1,.,bn),试写一个按下列规则合并A、B为线性表C的算法,即使得 C=(a1,b1,.,am,bm,bm+1,.,bn) 当mn时;或者 C=(a1,b1,.,an,bn,an+1,.,am) 当mn时。线性表A、B和C均以单链表作存储结构,且C表
13、利用A表和B表中的结点空间构成。注意:单链表的长度值m和n均未显式存储。实现下列函数:void Merge(LinkList ha, LinkList hb, LinkList &hc)/* 依题意,合并带头结点的单链表ha和hb为hc */单链表类型定义如下:typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;void Merge(LinkList ha, LinkList hb, LinkList &hc)/* 依题意,合并带头结点的单链表ha和hb为hc */ LinkList p,q,k,r;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 系统 第二 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内