数据结构(Java语言版)模拟试卷2(含参考答案)_第1页
数据结构(Java语言版)模拟试卷2(含参考答案)_第2页
数据结构(Java语言版)模拟试卷2(含参考答案)_第3页
数据结构(Java语言版)模拟试卷2(含参考答案)_第4页
数据结构(Java语言版)模拟试卷2(含参考答案)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构试卷(二)一、选择题(每题3分,共24分)1.下面关于线性表的叙述错误的是(D)。A.线性表采用顺序存储必须占用一片连续的存储空间B.线性表采用链式存储不必占用一片连续的存储空间C.线性表采用链式存储便于插入和删除操作的实现D.线性表采用顺序存储便于插入和删除操作的实现2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(B)个空指针域。A.2m-1B.2mC.2m+1D.4m3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C)。A.R-FB.F-RC.(R-F+M)%MD.(F-R+M)%M4.设某棵二叉树的中序遍历序列为ABCD、前序遍历序列为CABD,则后序遍历该二叉树得到的序列为(A)。A.BADCB.BCDAC.CDABD.CBDA5.设某完全无向图中有n个顶点,则该完全无向图中有(A)条边。A.n(n-1)/2B.n(n-1)C.n2D.n2-16.设某棵二叉树中有2000个结点,则该二叉树的最小高度为(C)。A.9B.10C.11D.127.设某有向图中有n个顶点,则该有向图对应的邻接表中有(B)个表头结点。A.n-1B.nC.n+1D.2n-18.设有一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为(C)。A.2,3,5,8,6B.3,2,5,8,6C.3,2,5,6,8D.2,3,6,5,8二、填空题(每空2分,共24分)1.为了能有效地应用Hash查找技术,必须解决的两个问题是___如何构造哈希函数和如何解决冲突。2.下面程序段的功能实现数据x进栈,要求在下画线处填上正确的语句。

1

classSqStack:

2

def__init__(self):

3

self.data=[None]*100

4

self.top=0

5

#......

6

7

#......

8

9

defpush(self,x):

10

ifself.top==100:

11

raise('overflow')

12

else:

13

__self.data[top]=x____

14

___top=top+1___3.中序遍历二叉排序树所得到的序列是____有序____序列(填有序或无序)。4.快速排序的最坏时间复杂度为___O(n2)_____,平均时间复杂度为___O(nlogn)_____。5.设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为____N0-1___;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有____N1+2N0____个空指针域。6.设某无向图中的顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=____d/2____。7.设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始堆为____大根堆:(80,75,55,56,63,44,31,38)小根堆:(31,38,44,56,75,80,55,63)____。8.已知一个有向图的邻接表存储结构如图A.3所示,从顶点1出发,DFS遍历的输出序列是_____1,3,4,5,2___,BFS遍历的输出序列是____1,3,2,4,5____。图A.3图的邻接表存储结构三、应用题(每题6分,共36分)1.设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。答:简单选择排序:22,40,45,48,80,78 直接插入排序:40,45,48,80,22,782.设指针变量p指向双向链表中的结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。答:q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q;3.设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。答:比较次数2,平均查找长度25/9图A.4无向图G4.设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。答:5.设有如图A.4所示的无向图G,要求给出用普里姆算法构造最小生成树所走过的边的集合。答:{(1,3),(1,2),(3,5),(5,6),(6,4)}6.设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。答:构造过程如下:插入过程:若二叉排序树为空,则待插入结点*S作为根结点插入到空树中;当非空时,将待插结点关键字S->key和树根关键字t->key进行比较,若s->key=t->key,则无须插入,若s->key<t->key,则插入到根的左子树中,若s->key>t->key,则插入到根的右子树中。而子树中的插入过程和在树中的插入过程相同,如此进行下去,直到把结点*s作为一个新的树叶插入到二叉排序树中,或者直到发现树已有相同关键字的结点为止。构造结果:四、算法设计题(每题8分,共16分)1.设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。

1

defquicksort(list,i,n):

2

left=i

3

right=n

4

temp=list[i]

5

whileleft<right:

6

whileleft<rightandlist[right]>temp:

7

right=right-1

8

ifleft<right:

9

list[left]=list[right]

10

left=left+1

11

whileleft<rightandlist[left]<temp:

12

left=left+1

13

ifleft<right:

14

list[right]=list[left]

15

right=right-1

16

list[left]=temp使用java改写:voidquicksort(int[]list,inti,intn){intleft=i;intright=n;inttemp=list[i];while(left<right){while(left<right&&list[right]>temp){right--;}if(left<right){list[left]=list[right];left++;}while(left<right&&list[left]<temp){left++;}if(left<right){list[right]=list[left];right--;}}list[left]=temp;}2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。

1

classNode():

2

i=0

3

def_init_(self,data):

4

self.data=data

5

self.next=None

6

Node.i+=1

7

8

defandOperation(a,b,c):

9

p=a

10

c=None

11

whilep!=None:

12

q=b

13

whileq!=None:

14

ifp.data==q.data:

15

break

16

q=q.next

17

ifq!=None:

18

t=Node(p.data)

19

t.next=c

20

c=t

21

p=p.next使用java改写:classNode{intdata;Nodenext;Node(intdt){data=dt;next=null;}}NodedefandOperation(Nodea,Nodeb){Nodep=a;Nodec=null;while(p!=null){Nodeq=b;while(q!=null){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论