精编版数据结构本期末综合练习.docx

上传人:b****7 文档编号:26619632 上传时间:2023-06-20 格式:DOCX 页数:35 大小:42.55KB
下载 相关 举报
精编版数据结构本期末综合练习.docx_第1页
第1页 / 共35页
精编版数据结构本期末综合练习.docx_第2页
第2页 / 共35页
精编版数据结构本期末综合练习.docx_第3页
第3页 / 共35页
精编版数据结构本期末综合练习.docx_第4页
第4页 / 共35页
精编版数据结构本期末综合练习.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

精编版数据结构本期末综合练习.docx

《精编版数据结构本期末综合练习.docx》由会员分享,可在线阅读,更多相关《精编版数据结构本期末综合练习.docx(35页珍藏版)》请在冰豆网上搜索。

精编版数据结构本期末综合练习.docx

精编版数据结构本期末综合练习

 

数据结构(本)期末综合练习(2014年12月)

数据结构期末综合练习

2014年12月

期末综合练习一

一、单项选择题

1.单向链表所具备的特点是()。

A.可以随机访问任一结点B.占用连续的存储空间

C.插入删除不需要移动元素D.可以通过某结点的指针域访问其前驱结点

2.头指针为head的带头结点的单向链表为空的判定条件是()为真。

A.head==NULLB.head->next==NULL

C.head->next=NULL;D.head->next!

=NULL

3.设有一个长度为18的顺序表,要在第6个元素之前插入一个元素(也就是插入元素作为新表的第6个元素),则移动元素个数为()。

A.12B.5C.13D.6

4.设有一个长度为32的顺序表,要删除第8个元素需移动元素的个数为()。

A.9B.8C.25D.24

5.栈和队列的共同特点是()。

A.都是线性结构B.元素都可以随机进出

C.都是先进后出D.都是先进先出

6.一个栈的进栈序列是2,4,6,8,10,则栈的不可能输出序列是()(进栈出栈可以交替进行)。

A.2,4,6,8,10B.8,6,10,2,4

C.8,10,6,4,2D.10,8,6,4,2

7.元素1,3,5,7按顺序依次入队列,按该队列的出队序列进栈,该栈的可能输出序列是()(进栈出栈可以交替进行)。

A.7,5,1,3B.7,3,1,5

C.5,1,3,7D.7,5,3,1

8.一个队列的入队序列是a,b,c,d,按该队列的可能输出序列使各元素依次入栈,该栈的可能输出序列是()。

(进栈出栈可以交替进行)。

A.d,c,b,aB.c,a,b,d

C.d,b,a,cD.d,a,b,c

9.在一个不带头结点的链队中,假设f和r分别为队头和队尾指针,则对该队列进行出

队操作中并把结点的值保存在变量e中,其运算为e=f→data;和()。

A.r=r→next;B.r→next=r;

C.f=f→next;D.f→next=f;

10.在一个链队中,假设f和r分别为队头和队尾指针,p指向一个已生成的结点,现要为

该结点的数据域赋值e,并使结点入队的运算为p->data=e;p->next=NULL;

和()。

A.f->next=p;f=p;B.r->next=p;r=p;

C.p->next=r;r=p;D.p->next=f;f=p;

11.设有一个对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),B数组共有45个元素,则该矩阵是()阶的对称矩阵。

A.15B.11C.10D.9

12.设有一个24阶的对称矩阵A,采用压缩存储的方式(矩阵的第一个元素为a1,1),将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第30号元素对应于矩阵中的元素是()。

A.a10,8B.a9,2C.a8,2D.a8,5

13.下列是C语言中〝abcd321ABCD〞的子串的选项是()。

A.〝21ABC〞B.〝abcABCD〞

C.abcDD.〝321a〞

14.字符串a1=〝BEIJING〞,a2=〝BEI〞,a3=〝BEFANG〞a4=“BEFI〞中最大的是()。

A.a1B.a2

C.a3D.a4

15.字符串a1=〝BEIJING〞,a2=〝BEF〞,a3=〝BEFANG〞,a4=“BEFI〞最小的是().

A.a1B.a2

C.a3D.a4

16.程序段chara[]=“English”;char*p=a;intn=0;

while(*p!

=‘\0’){n++;p++;}结果中,n的值是()。

A.6B.8

C.5D.7

17.一棵有20个结点采用链式存储的二叉树中,共有()个指针域为空。

A.21B.20C.19D.18

18.在一棵二叉树中,若编号为5的结点存在左孩子,则左孩子的顺序编号为()。

A.9B.10C.11D.12

19.设一棵哈夫曼树共有18个叶结点,则该树有()个非叶结点。

A.18B.19C.17D.16

20.设一棵采用链式存储的二叉树,除叶结点外每个结点度数都为2,该树结点中共有20个指针域为空。

则该树有()个叶结点。

A.21B.22C.9D.10

21.如图1所示的一个图,若从顶点g出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。

A.gabecdfB.gacfebdC.gaebcfdD.gaedfcb

b

d

f

e

C

a

g

图1

22.已知如图2所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为()。

A.abcedfgB.abcefdgC.aebcfdgD.acfdebg

b

d

f

e

c

a

b

d

f

e

c

a

g

图2

23.线性表以()方式存储,能进行折半查找。

A.关键字有序的B.关键字有序的顺序C.链接D.顺序

24.在有序表{10,23,32,36,53,66,68,76,87,90,101,120}中,用折半查找值53时,经()次比较后查找成功。

A.6B.3C.8D.4

25.有一个长度为8的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。

A.22/8B.20/8C.23/8D.21/8

26.有一个长度为11的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。

A.29/11B.33/11C.26/11D.30/11

27.排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()。

A.折半插入排序B.直接插入排序C.归并排序D.选择排序

28.设已有m个元素有序,在未排好序的序列中挑选第m+1个元素,并且只经过一次元素的交换就使第m+1个元素排序到位,该方法是()。

A.堆排序B.简单选择排序C.快速排序D.归并排序

29.排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为()排序。

A.堆B.冒泡C.选择D.快速

30.一组记录的关键字序列为(32,65,42,24,26,80),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。

A.26,24,32,42,65,80B.24,26,32,42,65,80

C.26,24,32,65,42,80D.26,24,32,80,42,65

二、填空题

1.广义表(a,(a,b),d,e,((i,j),k))的长度是________。

2.结构中的数据元素存在一对多的关系称为________结构。

3.广义表的(c,a,(a,b),d,e,((i,j),k))深度是________。

4.栈的操作特点是______________。

5.设顺序队列的类型为typedefstruct

{ElemTypedata[MaxSise];

intfront,rear;

}Squeue;

Squeue*sq;

sq为指向顺序队列的指针变量,要进行新元素x的入队操作,按教课书约定,可用语句

sq->data[sq->rear]=x;和________。

6.广义表的(a,(a,b),d,e,((i,j),k))深度是________。

7.序列4,2,5,3,8,6,采用冒泡排序算法,经一趟冒泡后,序列的结果是________。

(按由小到大顺序)

8.广义表((a,b),d,e,((i,j),k))的长度是________。

9.在对一组记录(50,34,92,19,11,68,56,41,79)进行直接插入排序(由小到大排

序),当把第7个记录56插入到有序表时,为寻找插入位置需比较________次。

10.设顺序队列的类型为typedefstruct

{ElemTypedata[MaxSise];

intfront,rear;

}Squeue;

Squeue*sq;

sq为指向顺序队列的指针变量,要进行元素的出队操作,并把元素赋给边量x,按教科书约定,可用语句x=sq->data[sq->front];和________。

11.数据结构中,________可以由一个或多个数据项组成。

12.设顺序队列的类型为typedefstruct

{ElemTypedata[MaxSise];

intfront,rear;

}Squeue;

Squeue*sq;

sq为指向顺序队列的指针变量,要进行新元素x的入队操作,按教课书约定,可用语句

sq->data[sq->rear]=x;和________。

13.循环队列中,设front和rear分别为队头和队尾指针,(最多元素为MaxSize,采用少用一个元素的模式),判断循环队列为满的条件为________为真。

14.序列14,12,15,13,18,16,采用冒泡排序算法,经一趟冒泡后,序列的结果是________。

(由小到大排序)

15.排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素依次进行比较,然后将其放入已排序序列的正确位置的方法是。

16.数据结构中,________之间的抽象关系称为逻辑结构。

17.对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A共有34个零元

素,其相应的三元组表共有_______个元素。

18.循环队列中,设front和rear分别为队头和队尾指针,(最多元素为MaxSize,),判断循环队列为空的条件为________为真。

19.在双向链表中,要删除p所指的结点,可以先用语句(p->prior)->next=p->next;然后再用语句(p->next)->prior=________。

20.排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是。

21.在双向链表中,每个结点有两个指针域,一个指向结点的直接后继,另一个指向_________。

22.对稀疏矩阵进行压缩存储,可采用三元组表,矩阵元素a3,4对应的三元组为_______。

23.把数据存储到计算机中,并具体体现数据之间的逻辑结构称为________结构。

24.在双向链表中,要删除p所指的结点,其中所用的一条语句(p->next)->prior=p->prior;

的功能是:

使P所指结点的直接后继的左指针指向________。

三、综合题

1.设数据集合a={1,12,5,8,3,10,7,13,9}

(1)依次取a中各数据,构造一棵二叉排序树。

(2)说明如何依据此二叉树得到a的有序序列。

(3)对该二叉树进行查找,成功查找到7要进行多少次元素间的比较?

(4)给出对该二叉树后序遍历的序列。

 

2.设数据集合a={62,74,30,15,56,48}

(1)依次取a中各数据,构造一棵二叉排序树。

(2)为了成功查找到48需要进行多少次元素间的比较?

(3)给出对该二叉树后序遍历的序列。

 

3.设有序表为(2,5,11,12,30,48,58,70,78,79,90),元素的序号依次为

1,2,3,……,11.

(1)画出对上述查找表进行折半查找所对应的判定树(树中结点用序号表示)

(2)说明成功查找到元素2需要经过多少次比较?

(3)说明不成功查找元素75需要经过多少次比较?

(4)给出中序遍历该折半查找判定树的序列

 

4.设有序表为(3,9,15,26,38,41,53,74,81,96,97,99),元素的

序号依次为1,2,……,12。

(1)画出对上述有序表进行折半查找所对应的判定树(树结点用序号表示)。

(2)设查找5号元素(38),需要进行多少次元素间的比较才能确定不能查到,依次和

哪些元素进行了比较?

(要求写出具体元素)。

(3)给出后序遍历该二叉树的序列。

(4)给出中序遍历该二叉树的序列。

四、程序填空题

1.设有一个不带头结点的单向链表,头指针为head,p、prep是指向结点类型的指针,该链表在输入信息时不慎把相邻两个结点的信息重复输入,以下程序段是在该单向链表中查找这相邻两个结点,,把该结点的数据域data打印出来,并把其中之一从链表中删除,填写程序中的空格。

prep=head;p=prep->next;

while(p->data!

=prep->data)

{prep=p;

__

(1)___

}

printf(“min=%d”,__

(2)___);

prep->next=__(3)___

2.学生信息存放在结构数组中,每个数组元素存放一个学生的信息,下标从0到n-1。

数组元素按学号num由小到大有序排列,以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字num等于k的记录,查找成功返回该记录的下标(数组元素的下标)。

失败时返回-1,完成程序中的空格。

typedefstruct

{

charsex;

intnum;

……

}NODE;

intBinary_Search(NODEa[],intn,intk)

{

intlow,mid,high;

low=0;

high=n-1;

while(___

(1)_____)

{

mid=(low+high)/2;

if(a[mid].num==k)

return__

(2)______;

elseif(___(3)_____)

low=mid+1;

else__(4)______;

}

return-1;

}

 

3.以下程序是折半插入排序的算法(按记录中关键字key排序)

设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,以下程序是要把a[i]插入到已经有序的序列a[1],…a[i-1]中。

voidbinsort(NODEa[],intn)

{intx,i,j,s,k,m;

for(i=2;i<=__

(1)___;i++)

{a[0]=a[i];

x=a[i].key;

s=1;

j=i-1;

while(s<=j)

{m=__

(2)___

if(x

__(3)___

else

__(4)___

}

for(k=i-1;k>=j+1;k--)

__(5)___=a[k];

a[j+1]=a[0];

}

}

4.以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查找到的树结点,不成功,则p指向为NULL),完成程序中的空格。

structbnode

{intkey;

structbnode*left;

structbnode*right;

};

typedefstructbnodeBnode

Bnode*BSearch(Bnode*bt,intk)/*bt用于接收二叉排序树

的根结点的指针,k用以

接收要查找的关键字*/

{Bnode*p;

if(bt==NULL)

return(bt);

___

(1)_____

while(p->key!

=__

(2)___)

{if(kkey)

___(3)_____;

else___(4)_____;

if(p==NULL)break;

}

returnp;

}

期末综合练习一答案

一、单项选择题

1.C2.B3.C4.D5.A6.B7.D8.A9.C10.B11.D12.C13.A14.A15.B16.D17.A18.B19.C20.D21.D22.B23.B24.D25.D26.B27.A28.B29.C30.A

二、填空题

1.5

2.树形

3.3

4.先进后出

5.sq->rear++;

6.3

7.2,4,3,5,6,8

8.4

9.3

10.sq->fronf++;

11.数据元素

12.sq->rear++;

13.front==(rear+1)%MaxSize

14.12,14,13,15,16,18

15.直接插入排序

16.数据元素

17.8

18.front==rear

19.p->prior;

20.折半插入排序

21.结点的直接前驱

22.(3,4,a3,4)

23.存储

24.P所指结点的直接前驱

三、综合应用题

1.

(1)图3

(2)中序遍历1,3,5,7,8,9,10,12,13

(3)5次

(4)3,7,9,10,8,5,13,12,1

图3

1

3

5

12

13

7

8

9

10

2

(1)图4

(4)4次

(5)15,48,56,30,74,62

62

74

56

48

15

30

图4

3

(1)图5

4

7

11

8

5

2

10

1

3113

9

6

图5

(2)3次

(3)4次

(4)1,2,3,4,5,6,7,8,9,10,11(序号)

4.

(1)图6

(2)4次41,15,26,38

(3)2(9),1(3),5(38),4(26),3(15),8(74),7(53),10(96),12(99),11(97),9(81),6(41)

(4)1(3),2(9),3(15),4(26),5(38),6(41),7(53),8(74),9(81),10(96),11(97),12(99)

4

7

12

8

5

2

11

1

10

6

3

9

图6

 

四、程序填空题

1.

(1)p=p->next;

(2)p->data或prep->data

(3)p->next;

2.

(1)low<=high

(2)mid

(3)a[mid].num

(4)high=mid-1;

3.

(1)n

(2)(s+j)/2;

(3)j=m-1;

(4)s=m+1;

(5)a[k+1]

4.

(1)p=bt;

(2)k

(3)p=p->left

(4)p=p->right

期末综合练习二

一、单项选择题

1.数据的存储结构包括数据元素的表示和()。

A.数据处理的方法B.数据元素间的关系的表示

C.相关算法D.数据元素的类型

2.下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储,必须占用一片连续的存储空间

B.线性表采用顺序存储,进行插入和删除操作,不需要进行数据元素间的移动

C.线性表采用链式存储,不必占用连续的存储空间

D.线性表采用链式存储,进行插入删除操作,不需要移动元素

3.设有一个长度为22的顺序表,要删除第8个元素需移动元素的个数为()。

A.15B.22C.14D.23

4.设有一个长度为28的顺序表,要在第12个元素之前插入一个元素(也就是插入元素作为新表的第12个元素),则移动元素个数为()。

A.12B.17C.13D.11

5.元素2,6,10,14按顺序依次进栈,按该栈的可能输出序列依次入队列,该队列

的不可能输出序列是是()。

(进栈出栈可以交替进行)。

A.14,10,6,2B.2,6,10,14

C.14,10,2,6D.6,2,14,10

6.元素2,4,6,8按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈可以交替进行)。

A.8,6,4,2B.2,4,6,8

C.4,2,8,6D.8,6,2,4

7.对一个栈顶指针为top的链栈进行进栈操作,设P为指向待进栈的结点的指针,把e

的值赋值给该结点的数据域,然后使该结点进栈,则执行()。

A.p->data=e;p=top->next;top=top→next;

B.p->data=e;p->next=top;top=p;

C.p->data=e;top=p;

D.p->data=e;p->next=top->next;top=p;

8.对一个栈顶指针为top的链栈进行出栈操作,用变量e保存栈顶元素的值,则执行

()。

A.e=top->next;top->data=e;B.e=top->data;top=top->next;

C.top=top->next;e=top->data;D.top=top->next;e=data;

9.对不带头结点的单向链表,判断是否为空的条件是()(设头指针为head)。

A.head==NULLB.head->next==NULL

C.head->next==headD.head=NULL

10.在一个尾指针为rear的不带头结点的单循环链表中,插入一个s所指的结点,并作为第一个结点,可执行()。

A.rear→next=s;s→next=rear→nextB.rear→next=s→next;

C.rear=s→nextD.s→next=rear→next;rear→next=s;

11.设有一个25阶的对称矩阵A(矩阵的第一个元素为a1,1),采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素a7,5在一维数组B中的下标是()。

A.34B.14C.26D.27

12.设有一个28阶的对称矩阵A(矩阵的第一个元素为a1,1),采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第40号元素对应于矩阵中的元素是()。

A.a10,8B.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1