《数据结构C语言描述》陈慧南主编答案.docx
- 文档编号:2857858
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:14
- 大小:79.80KB
《数据结构C语言描述》陈慧南主编答案.docx
《《数据结构C语言描述》陈慧南主编答案.docx》由会员分享,可在线阅读,更多相关《《数据结构C语言描述》陈慧南主编答案.docx(14页珍藏版)》请在冰豆网上搜索。
《数据结构C语言描述》陈慧南主编答案
第一章绪论
1.(第14页,第(18)题)
确定划线语句的执行次数,计算它们的渐近时间复杂度。
(1)i=1;k=0;
do{
k=k+10*i;i++;
}while(i<=n-1)
划线语句的执行次数为n-1(n>=2),n=1时执行1次。
(2)i=1;x=0;
do{
x++;i=2*i;
}while(i 划线语句的执行次数为log2n。 (3)for(inti=1;i<=n;i++) for(intj=1;j<=i;j++) for(intk=1;k<=j;k++) x++; 划线语句的执行次数为n(n+1)(n+2)/6。 (4)x=n;y=0; while(x>=(y+1)*(y+1))y++; 划线语句的执行次数为n。 第二章两种基本的数据结构 2-4. Loc(A[i][j][k])=134+(i*n*p+j*p+k)*2 2-9.第34页习题 (2).9 voidInvert(Telements[],intlength) {//length数组长度 //elements[]为需要逆序的数组 Te; for(inti=1;i<=length/2;i++) { e=elements[i-1]; elements[i-1]=elements[length-i]; elements[length-i]=e; } } 2-12.第34页习题(12) voidpInvert(Node*first) { Node*p=first,*q; first=NULL; while(p){ q=p->Link;p->Link=first; first=p;p=q; } } 第三章栈与队列 1.第54页习题 (1) 设A、B、C、D、E五个元素依次进栈(进栈后可立即出栈),问能否得到下列序列。 若能得到,则给出相应的push和pop序列;若不能,则说明理由。 1)A,B,C,D,E2)A,C,E,B,D 3)C,A,B,D,E4)E,D,C,B,A 答: (1)Push(A);Pop(A);Push(B);Pop(B); Push(C);Pop(C);Push(D);Pop(D); Push(E);Pop(E); 2)不能得到,因为E,B,D而言,E最先出栈,则表明,此时B和D均在栈中,由于,B先于D进栈,所以应有D先出栈。 3)不能得到,因为C,A,B而言,C最先出栈,则表明,此时A和B均在栈中,由于A优先于B近栈,所以B应比A先出栈。 (4)Push(A);Push(B);Push(C);Push(D);Push(E); Pop(E);Pop(D);Pop(C);Pop(B);Pop(A); 5. Stack1Stack2 TOP1TOP2 栈满Top2-Top1==1 Top1<0栈1空Top2>n-1栈2空 9: voidPrintQueue(Queueq) { intfirst=q.Front+1; while(((first)%q.MaxQueue)! =q.Rear) { printf("%d\n",q.Elements[first]); first=first+1; } printf("%d\n",q.Elements[first]); } voidPrintQueue2(Queueq) { for(inti=1;q.Front! =q.Rear;i++) { printf("%d\n",q.Elements[(q.Front+1)%q.MaxQueue]); q.Front=(q.Front+1)%q.MaxQueue; } } voidPrintQueue3(Queueq) { for(;q.Front! =q.Rear;q.Front=(q.Front+1)%q.MaxQueue) { printf("%d\n",q.Elements[(q.Front+1)%q.MaxQueue]); } } 第四章线性表与数组 1(85页) intSearch_Insert(List*lst,Tx) { inti,j; j=lst->Size-1; for(i=lst->Size-1;i>=0;i--) { if(lst->Elements[i]==x) { returni; } } if(lst->Size==lst->MaxList) { return-1; } while(lst->Elements[j]>x) { lst->Elements[j+1]=lst->Elements[j]; j--; } lst->Elements[j+1]=x; lst->Size++; returnj+1; } voidSearch_Delete(List*lst,Tx,Ty) { inti=0; if(lst->Size==0) { printf("thelistisempty,cannotbedeleted! \n"); return; } for(intj=0;j { if((lst->Elements[j] { lst->Elements[i]=lst->Elements[j]; i=i+1; } } lst->Size=i; } 13.(第86页,第13题)给出下列稀疏矩阵的 顺序三元组的行优先和列优先表示。 答: 14.(第86页,第14题) 对题图4-5的稀疏矩阵执行矩阵转置时数组num[]和k[]的值。 答: 第五章树 第2题,第141页, 对于三个结点A,B和C,可分别组成多少不同的无序树、有序树和二叉树? 答: (1)无序树: 9棵 (2)有序树: 12棵 (3)二叉树: 30棵 第3题,P141 n0=n2+2*n3+….+(m-1)nm+1 第5题,P142 (1)或者为空二叉树,或者所有结点的左子树都是空的单支树 (2)或者为空二叉树,或者只有根结点的二叉树 (3)或者为空二叉树,或者所有结点的右子树都是空的单支树 第7题,第142页, 给出对图6-31中的树的先序遍历和后序遍历的结果。 答: 先序: D,E,H,F,J,G,C,K,A,B 中序: H,E,J,F,G,K,C,D,A,B 后序: H,J,K,C,G,F,E,B,A,D 第6题第142页, 设对一棵二叉树进行中序遍历和后序遍历的结果分别为: (1)中序遍历BDCEAFHG (2)后序遍历DECBHGFA 画出该二叉树。 答: 第8(3)题第142页, intcount=0; voidSizeOfLeaf(BTNode*t) { if(t){ if((! (t->RChild))&&(! (t->LChild))) { count=count+1; } SizeOfLeaf(t->LChild); SizeOfLeaf(t->RChild); } } 第13题第142页, 将图题6-32中的树转换成二叉树, 并将图6-31中的二叉树转换成森林。 第18题第1438页, 设S={A,B,C,D,E,F},W={2,3,5,7,9,12},对字符集合进行哈夫曼编码,W为各字符的频率。 (1)画出哈夫曼树 (2)计算带权路径长度 编码: A: 1010 B: 1011 C: 100 D: 00 E: 01 F: 11 第六章集合 第4题,P155 对半搜索算法要求其必须针对顺序存储的有序表。 顺序搜索从头搜到尾,所以不影响。 补充: 已知(1,2,3,4,5,6,7,8,9,10,11)找到9比较几次? M=(1+11)/2=6比较一次 6<9,找[7,11] M=(7+11)/2=9 9=9比较2次 成功 所以一共比较2次成功 第七章搜索树 1.第189页,第 (1), 建立37,45,91,25,14,76,56,65为输入时的二叉搜索树,再从该树上依此删除76,45,则树形分别如何? 第八章散列与跳表 第3题,第209页, 设散列表ht[11],散列函数h(key)=key%11。 采用线性探查法解决冲突,试用关键字值序 列: 70,25,80,35,60,45,50,55建立散列表。 线性探查法: 伪随机探查法: P=13 0 1 2 3 4 5 6 7 8 9 10 55 45 35 25 70 80 50 60 对80: (3+13)%11=5 对60: (5+13)%11=7 二次探查法 0 1 2 3 4 5 6 7 8 9 10 45 35 80 25 70 60 50 55 对80: (3+1*1)%11=4(3-1*1)%11=2 对35: (2+1*1)%11=3(2-1*1)%11=1 对45: (1+1*1)%11=2(12-1*1)%11=0 对55: (0+1*1)%11=1(0-1*1)%11=10 第4题,第209页, 双散列法: 70 25 80 35 60 45 50 55 H1 4 3 3 2 5 1 6 0 H2 9 1 6 0 1 2 3 4 5 6 7 8 9 10 55 80 35 25 70 60 45 50 对80: (3+1*9)%11=1 对45: (1+1*1)%11=2(1+2*1)%11=3 (1+3*1)%11=4(1+4*1)%11=5 (1+5*1)%11=6 对50: (6+1*6)%11=1(6+2*6)%11=7 第九章图 第 (1)题,第243页, 对下面的有向图求 (1)每个顶点的入度和出度; (2)强连通分量 (3)邻接矩阵 第 (2)题,第243页, 当以边〈1,0〉,〈1,3〉,〈2,1〉,〈2,4〉,〈3,2〉,〈3,4〉,〈4,0〉,〈4,1〉,〈4,5〉, 〈5,0〉的次序从只有6个顶点没有边的图开始,通过依此插入这些边,建立邻接表结构。 画出该邻接表。 深度优先遍历: 0,1,3,4,5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构C语言描述 数据结构 语言 描述 陈慧南 主编 答案