数据结构试题-试卷一-含答案_第1页
数据结构试题-试卷一-含答案_第2页
数据结构试题-试卷一-含答案_第3页
数据结构试题-试卷一-含答案_第4页
数据结构试题-试卷一-含答案_第5页
全文预览已结束

下载本文档

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

文档简介

模拟试题一模拟试题一

一、选择题(30分)

1.组成数据的基本单位是(

)。

A)数据项

B)数据类型

C)数据元素

D)数据变量

2.线性表采用链式存储结构时,要求内存中可用存储单元的地址(

)。

A)必须是连续的

B)部分地址必须是连续的

C)一定是不连续的

D)连续或不连续都可以

3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(

)。

A)O(1)

B)O(n)

C)O(n2)

D)O(nlog2n)

4.栈结构通常采用的两种结构是(

)。

A)顺序存储结构和链表存储结构

B)散列方式和索引方式

C)链表存储结构和数组

D)线性链表结构和非线性存储结构

5.表达式a*(b+c)-d的后缀表达式是(

)。

A)abcd+-

B)abc+*d-

C)abc*+d-

D)一十*abcd

6.栈和队列的共同特点是(

)。

A)都是先进先出

B)都是先进后出

C)只允许在端点处插入和删除元素

D)没有共同点

7.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(

)。

A)GEDHFBCA

B)DGEBHFCA

C)ABCDEFGH

D)ACBFEDHG

8.链表不具有的特点是(

),

A)不必事先估计存储空间

B)可随机访问任一元素

C)插入删除不需要移动元素

D)所需空间与线性表长度成正比

9.在深度为5的满二叉树中,叶子结点的个数为(

)。

A)32

B)31

C)16

D)15

10.最简单的交换排序方法是(

)。

A)快速排序

B)选择排序

C)堆排序

D)冒泡排序

11.数据结构是研究数据的(

)以及它们之间的相互关系。

A)理想结构,物理结构

B)理想结构,抽象结构

C)物理结构,逻辑结构

D)抽象结构,逻辑结构

12.线性表采用链式存储时,其地址(

)。

A)必须是连续的

B)部分地址必须是连续的

C)-定是不连续的

D)连续与否均可以

13.设循环队列Q[l...n-l]的首尾指针为f和r,当插入元素时尾指针r加1,首指针F总是指在队列中第一个元素的前一个位置,则队列中元素计数为(

)。

A)r-f

B)n-(r-f)

C)(r-f+n)%n

D)(f-r+n)%n

14.完成堆排序的全过程需要(

)个记录大小的辅助空间。

A)1

B)n

C)nlog2n

D)|_nlog2n_|

15.若给定的关键字集合为{20,15,14,18,21,36,40,10},一趟快速排序结束时,键值的排列为(

)。

A)10,15,14,18,20,36,40,21

B)10,15,14,18,20,40,36,21

C)10,15,14,20,18,40,36,21

D)15,10,14,18,20,36,40,21

二、填空题(22分)

1.一棵完全二叉树的第5层有5个结点,则共有__________个结点。

2.有向图G用邻接矩阵A{1…n,1...n}存储,其第i列的所有元素等于顶点i的__________。

3.设有一空栈,栈顶指针为IOOOH(十六进制),现有输入序列为1,2,3,4,5,经过Push,Push,Pop,Push,Pop,Push,Push操作后,输出序列为__________。

4.在具有n(n≥1)个结点的k叉树中,有__________个空指针。

5.模式中“ababbabbab”的前缀函数为__________。

6.设图G的顶点数为n,边数为e,第i个顶点的度数为D(vi),则e=__________即边数与各项点的度数之间的关系)。

7.按__________遍历二叉树,可以得到按值递增的关键值序列,在下图所示的二叉树中,检索关键值85的过程中,需与85进行比较的关键码序列为__________。

8.下列算法实现二叉树排序树上的查找,请在空格处填上适当的语句,完成上述功能。

bitreptr*bstsearch(bitreptr

*t,

keytypek)

{

if(t==NULL)

returnNULL;

else

while(t!=NULL)

{

if(t->key==k__________;

if(t->key>k)__________;

else__________;

}

}

三、应用题(16分)1.设二叉树的顺序存储结构如下所示。(4分)

(1)根据其存储结构,画出二叉树。

(2)写出按前序、中序、后序遍历该二叉树所得的结点序列。

(3)画出二叉树的后序线索化树。

2.-棵完全二叉树共有21个结点,现顺序存放在一个矢量中,矢量的下标正好为结点的序号,试问序号为12的双亲结点存在吗?是什么?(4分)

3.线性表有顺序表和链表两种存储结构,简述各自的优缺点。(4分)

4.何谓队列的“假溢”现象?如何解决?(4分)

四、算法设计(32分)

1.已知线性表的元素按递增顺序排列,并以带首结点的单链表作为存储结构。试编写一个删除表中所有值大于min且小于max的元素的算法。

2.试设计一个算法,求出指定结点在给定的二叉树中的层次。

3.已知一个单链表中每个结点存放一个整数,并且其结点数不少于2。试编写算法以判断该链表中从第二项起的每个元素值是否等于其序号的平方减去其前驱结点的值,若满足,返回True,否则返回False。4.在含有n个元素的堆中增加一个元素,且调整为堆。模拟试题一答案

模拟试题一参考答案

一、选择题

1.C

2.D

3.B

4.A

5.B

6.C

7.B

8.B

9.C

10.D

11.C

12.D

13.D

14.A

15.A

二、填空题

1.20。

2.入度即ID(i)。

3.2,3,5,4,

1.

4.n(k-l)+l。

5.Next[j]=(0

1

1

23

1

2312)。

6.

7.中序,55

9057

7585a

8.Return(t),Return(bstsearch(t->lchild,k)),Return(bstsearch(t->rchild,k))。

三、应用题

1.(1)该存储结构对应的二叉树为

(2)先序序列为EADCBFHGI。

中序序列为ABCDEFGHI。

后序序列为BCDAGIHFE。

(3)后序线索树为。

2.序号为12的双亲结点存在。因为这棵完全二叉树除根结点外的其余20个结点都有1个唯一的双亲结点。序号为i的双亲结点是|_i/2_|,所以12的双亲结点为|_12/2_|=6。

3.在顺序表结构中,逻辑相邻的元素其存储位置也相邻。只要确定了线性表的起始存储位置,就可以随机存取任意数据元素。所以顺序表的优点是方便查找,缺点是做插入和删除操作时需移动大量元素。链表结构不要求逻辑相邻元素的存储位置相邻,即可存放内存中任何位置,元素间逻辑关系依指针相连。查找时必须从表头指针开始依序查找。但插入和删除操作时无需移动元素,只修改元素的指针即可。所以链表的优点是方便插入和删除操作,缺点是不能随机查找任一元素。

4.随着数据元素的不断插入和删除,队列的队首指针已指向允许插入的最大位置,此时或许还有很多可插入的空间,但却不能插入数据元素了,这种现象称为队列的“假溢”。解决的方法是采用循环链表(队列)。

四、算法设计

1.删除表中所有值大于min且小于max的元素的算法如下:

Typedef

struct

node{

intdata;

structnode+next

}

linklist;

delete(linklist

*head,int

max,int

min)

/*删除有序单链表中所有值大于min且小于max的元素*/

{linklist

*p,*q;

if(head!=NULL){

q=head;

p=head->next;

while(p!=NULL&&p->data<=min)

{

q=p;

p=p->next;

}

while(p!=NULL&&p->data<max)

p=p->next;

q->next=p;

2.求出指定结点在给定的二叉树中的层次的算法:

Void

level(bitree

*t,

bitree

*p,inth,int

th)

/*t为指向二叉树的指针,p指向待找的结点,h为p结点的层次数,th为当前的层次数*/

{if(t==NULl)

h=0;

/*树为空时返回0*/

else

if(p==t)

h=th;

/*找到结点p时*/

else

{

level(p,t->lchild,h,th+l);

/*在左子树中查找*/

if(h==-1)level(p,t->rchild,h,th+l);/*在右子树中查找*/

}

}3.判断链表中从第二项起的每个元素值是否等于其序号的平方减去其前驱结点的值的算法如下:

intJudge(linklist

*head)

{intflag,i

linklist

*P,*q;

q=head->next;

flag=False;

i=2;

while(p!-NUIL)(

if(p->data==i*i-q->data)

flag=True;

else

returnFalse;

q=p;

p=p->next;

i++;

)

returnflag;

}4.在含有n个元素的堆中增加一个元素,且调整为堆的算法:

voidheapinsert(RectyPe

R[],datatypex)

/*在堆R[1]到R

温馨提示

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

评论

0/150

提交评论