ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:56.90KB ,
资源ID:1768518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1768518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构期末考试复习总结.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数据结构期末考试复习总结.docx

1、数据结构期末考试复习总结 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#数据结构期末考试复习总结数据结构期末考试题型及分值(1)简答题 6题*5分=30分 简要回答要点 (2)分析题 6题*5分=30分 给出结果(3)设计题 1题*10分=10分 设计思想及结果(4)编程题 1题*10分=10分 完整代码(5)综合题 1题*20分=20分 抽象数据类型的定义、表示、实现、算法分析 定义=功能(ADT) 表示=存储结构体 实现=算法(基本操作)算法分析=时间、空间复杂度考试概念有:1.数据结构 一、线性表(栈-队-列-串-数组-广义表-逻辑结构-存储结构-运算

2、结构) 二、非线性表(集合-树-图) 2.抽象数据类型 数据对象-数据关系-基本操作 3.算法 性质-要求(设计)-效率(度量) 4.实例 查找:高效查找算法 排序:高效的排序算法 分析题考试题目参考 (1)顺序建BBST (2)6-5-4-3-2-1顺序建BBST简答题实例设计题:(1)(2)数据结构试卷(一)三、计算题(每题 6 分,共24分)1.在如下数组A中链接存储了一个线性表,表头指针为A 0.next,试写出该线性表。 A 0 1 2 3 4 5 6 7 data605078903440next3572041线性表为:(78,50,40,60,34,90)2.请画出下图的邻接矩阵和

3、邻接表。3.已知一个图的顶点集V和边集E分别为:V=1,2,3,4,5,6,7; E=(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。用克鲁斯卡尔算法得到的最小生成树为: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。见图12 图12 图11四、阅读算法(每题7分

4、,共14分)1.LinkList mynote(LinkList L) 知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。2已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为0.6,假定选用的散列函数是H(K)= K mod 7,若发生冲突采用线性探查法处理,试:H(36)=36 mod 7=1; H(22)=(1+1) mod 7=2; .冲突H(15)=15 mod 7=1;.冲突 H2(22)=(2+1) mod 7=3; H(15)=(1+1) mod 7=2;H(40)=40 mod

5、 7=5;H(63)=63 mod 7=0;H(22)=22 mod 7=1; .冲突(1)计算出每一个元素的散列地址并在下图中填写出散列表: 0 1 2 3 4 5 66336152240(2)求出在查找每一个元素概率相等情况下的平均查找长度。ASL=3已知序列(10,18,4,3,6,12,1,9,18,8)请用快速排序写出每一趟排序的结果。(8,9,4,3,6,1),10,(12,18,18) (1,6,4,3),8,(9),10,12,(18,18) 1,(3,4,6),8,9,10,12,18,(18) 1,3,(4,6),8,9,10,12,18,18 1,3, 4,6,8,9,1

6、0,12,18,18四、算法设计题(每题15分,共30分)1设计在单链表中删除值相同的多余结点的算法。设计在单链表中删除值相同的多余结点的算法。typedef int datatype;typedef struct node datatype data; struct node *next;lklist;void delredundant(lklist *&head) lklist *p,*q,*s; for(p=head;p!=0;p=p-next) for(q=p-next,s=q;q!=0; ) if (q-data=p-data) s-next=q-next; free(q);q=s-

7、next; else s=q,q=q-next; 2设计一个求结点x在二叉树中的双亲结点算法。设计一个求结点x在二叉树中的双亲结点算法。typedef struct node datatype data; struct node *lchild,*rchild; bitree;bitree *q20; int r=0,f=0,flag=0;void preorder(bitree *bt, char x) if (bt!=0 & flag=0)if (bt-data=x) flag=1; return;else r=(r+1)% 20; qr=bt; preorder(bt-lchild,x)

8、; preorder(bt-rchild,x); void parent(bitree *bt,char x) int i; preorder(bt,x); for(i=f+1; ilchild-data=x | qi-rchild-data) break; if (flag=0) printf(not found xn); else if (idata); else printf(not parent);数据结构试卷(四)三、计算题(每题10分,共30分)1、画出广义表LS=( ) , (e) , (a , (b , c , d )的头尾链表存储结构。2、下图所示的森林:(1) 求树(a)的

9、先根序列和后根序列;(1) ABCDEF; BDEFCA;(2) ABCDEFGHIJK; BDEFCAIJKHG林转换为相应的二叉树;(2) 求森林先序序列和中序序列;ABCDEF; BDEFCA; (3)将此森林转换为相应的二叉树;(2) ABCDEFGHIJK; BDEFCAIJKHG林转换为相应的二叉树;3、设散列表的地址范围是 0.9 ,散列函数为H(key)= (key 2 +2)MOD 9,并采用链表处理冲突,请画出元素7、4、5、3、6、2、8、9依次插入散列表的存储结构。H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6四、算法设计

10、题(每题10分,共30分)1设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。typedef char datatype;typedef struct node datatype data; struct node *next;lklist;void split(lklist *head,lklist *&ha,lklist *&hb,lklist *&hc) lkl

11、ist *p; ha=0,hb=0,hc=0; for(p=head;p!=0;p=head) head=p-next; p-next=0; if (p-data=A & p-datanext=ha; ha=p; else if (p-data=0 & p-datanext=hb; hb=p; else p-next=hc; hc=p; 2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法。设计在链式存储结构上交换二叉树中所有结点左右子树的算法。typedef struct node int data; struct node *lchild,*rchild; bitree;void s

12、wapbitree(bitree *bt) bitree *p; if(bt=0) return;swapbitree(bt-lchild); swapbitree(bt-rchild);p=bt-lchild; bt-lchild=bt-rchild; bt-rchild=p;3.在链式存储结构上建立一棵二叉排序树。在链式存储结构上建立一棵二叉排序树。#define n 10typedef struct nodeint key; struct node *lchild,*rchild;bitree;void bstinsert(bitree *&bt,int key) if (bt=0)bt

13、=(bitree *)malloc(sizeof(bitree); bt-key=key;bt-lchild=bt-rchild=0; else if (bt-keykey) bstinsert(bt-lchild,key); else bstinsert(bt-rchild,key);void createbsttree(bitree *&bt) int i; for(i=1;idata!=bt2-data) return(0); else return(judgebitree(bt1-lchild,bt2-lchild)*judgebitree(bt1-rchild,bt2-rchild)

14、;2设计两个有序单链表的合并排序算法。设计两个有序单链表的合并排序算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc) lklist *s=hc=0; while(ha!=0 & hb!=0) if(ha-datadata)if(s=0) hc=s=ha; else s-next=ha; s=ha;ha=ha-next; else if(s=0) hc=s=hb; else s-next=hb; s=hb;hb=hb-next; if(ha=0) s-next=hb; else s-next=ha;数据结构试卷(六)四、算法设计题(20分

15、)1设计在顺序有序表中实现二分查找的算法。 设计在顺序有序表中实现二分查找的算法。struct record int key; int others;int bisearch(struct record r , int k) int low=0,mid,high=n-1; while(lowk) high=mid-1; else low=mid+1; return(0);2设计判断二叉树是否为二叉排序树的算法。设计判断二叉树是否为二叉排序树的算法。int minnum=-32768,flag=1;typedef struct nodeint key; struct node *lchild,*

16、rchild;bitree;void inorder(bitree *bt) if (bt!=0) inorder(bt-lchild); if(minnumbt-key)flag=0; minnum=bt-key;inorder(bt-rchild);3.在链式存储结构上设计直接插入排序算法在链式存储结构上设计直接插入排序算法void straightinsertsort(lklist *&head) lklist *s,*p,*q; int t; if (head=0 | head-next=0) return; else for(q=head,p=head-next;p!=0;p=q-n

17、ext) for(s=head;s!=q-next;s=s-next) if (s-datap-data) break; if(s=q-next)q=p;elseq-next=p-next; p-next=s-next; s-next=p; t=p-data;p-data=s-data;s-data=t; 数据结构试卷(七)四、算法设计题(20分)1.设计在链式结构上实现简单选择排序算法。设计在链式结构上实现简单选择排序算法。void simpleselectsorlklist(lklist *&head) lklist *p,*q,*s; int min,t; if(head=0 |head

18、-next=0) return; for(q=head; q!=0;q=q-next) min=q-data; s=q; for(p=q-next; p!=0;p=p-next) if(minp-data)min=p-data; s=p; if(s!=q)t=s-data; s-data=q-data; q-data=t; 2.设计在顺序存储结构上实现求子串算法。设计在顺序存储结构上实现求子串算法。void substring(char s , long start, long count, char t ) long i,j,length=strlen(s); if (startlength

19、) printf(The copy position is wrong); else if (start+count-1length) printf(Too characters to be copied);else for(i=start-1,j=0; ikey=x) return; else if (bt-keyx) level(bt-lchild,x); else level(bt-rchild,x);数据结构试卷(八)四、算法设计题(20分)1.设计一个在链式存储结构上统计二叉树中结点个数的算法。设计一个在链式存储结构上统计二叉树中结点个数的算法。void countnode(bitr

20、ee *bt,int &count) if(bt!=0) count+; countnode(bt-lchild,count); countnode(bt-rchild,count);2.设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。设计一个算法将无向图的邻接矩阵转为对应邻接表的算法。typedef struct int vertexm; int edgemm;gadjmatrix;typedef struct node1int info;int adjvertex; struct node1 *nextarc;glinklistnode;typedef struct node2int

21、vertexinfo;glinklistnode *firstarc;glinkheadnode;void adjmatrixtoadjlist(gadjmatrix g1 ,glinkheadnode g2 )int i,j; glinklistnode *p;for(i=0;i=n-1;i+) g2i.firstarc=0;for(i=0;i=n-1;i+) for(j=0;jadjvertex=j;p-nextarc=gi.firstarc; gi.firstarc=p;p=(glinklistnode *)malloc(sizeof(glinklistnode);p-adjvertex

22、=i;p-nextarc=gj.firstarc; gj.firstarc=p;数据结构试卷(九)五、算法设计题(20分)1设计计算二叉树中所有结点值之和的算法。设计计算二叉树中所有结点值之和的算法。void sum(bitree *bt,int &s) if(bt!=0) s=s+bt-data; sum(bt-lchild,s); sum(bt-rchild,s); 2设计将所有奇数移到所有偶数之前的算法。设计将所有奇数移到所有偶数之前的算法。void quickpass(int r, int s, int t) int i=s,j=t,x=rs; while(ij) while (ij

23、& rj%2=0) j=j-1; if (ij) ri=rj;i=i+1; while (ij & ri%2=1) i=i+1; if (inext=0) return(1);elsefor(q=head,p=head-next; p!=0; q=p,p=p-next)if(q-datap-data) return(0);return(1);数据结构试卷(十)三、算法设计题(22分)1设计在链式存储结构上合并排序的算法。设计在链式存储结构上合并排序的算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc) lklist *s=hc=0; wh

24、ile(ha!=0 & hb!=0) if(ha-datadata)if(s=0) hc=s=ha; else s-next=ha; s=ha;ha=ha-next; else if(s=0) hc=s=hb; else s-next=hb; s=hb;hb=hb-next; if(ha=0) s-next=hb; else s-next=ha;2设计在二叉排序树上查找结点X的算法。设计在二叉排序树上查找结点X的算法。bitree *bstsearch1(bitree *t, int key) bitree *p=t; while(p!=0) if (p-key=key) return(p);

25、else if (p-keykey)p=p-lchild; else p=p-rchild; return(0);3设关键字序列(k1,k2,kn-1)是堆,设计算法将关键字序列(k1,k2,kn-1,x)调整为堆。设关键字序列(k1,k2,kn-1)是堆,设计算法将关键字序列(k1,k2,kn-1,x)调整为堆。void adjustheap(int r ,int n) int j=n,i=j/2,temp=rj-1; while (i=1) if (temp=ri-1)break; elserj-1=ri-1; j=i; i=i/2; rj-1=temp;数据结构试卷(一)参考答案三、计算题(每题6分,共24分)1.线性表为:(78,50,40,60,34,90)2.邻接矩阵: 邻接表如图11所示:图113.用克鲁斯卡尔算法得到的最小生成树为: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204.见图12图12四、读算法(

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2