数据结构本课程期末综合练习文档格式.docx
《数据结构本课程期末综合练习文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构本课程期末综合练习文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
next=NULL
9.栈的插入删除操作在()进行。
A.栈底B.栈顶C.任意位置D.指定位置
10.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。
A.r=f->
next;
B.r=r->
C.f=r->
D.f=f->
11.以下说法正确的是()。
A.栈的特点是先进先出,队列的特点是先进后出B.栈和队列的特点都是先进后出
C.栈的特点是先进后出,队列的特点是先进先出D.栈和队列的特点都是先进先出
12.元素3,6,9按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈可以交替进行)。
A.9,3,6B.9,6,3
C.6,3,9D.3,9,6
13.元素2,4,6,8按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈可以交替进行)。
A.8,6,4,2B.2,4,6,8
C.4,2,8,6D.8,6,2,4
14.设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主存储到一维数组B中(数组下标从1开始),则矩阵中元素A8,5在一维数组B中的下标是()。
A.33B.32C.85D.41
15.设有一个15阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素a7,6在一维数组B中的下标是()。
A.42B.13C.27D.32
16.在C语言中,顺序存储长度为3的字符串,需要占用()个字节。
A.3B.4C.6D.12
17.串函数StrCmp(“d”,“D”)的值为()。
A.0B.1C.-1D.3
18.一棵有n个结点采用链式存储的二叉树中,共有()个指针域为空。
A.n+1B.nC.n-1D.n-2
19.在一棵二叉树中,若编号为i的结点存在右孩子,则右孩子的顺序编号为()。
A.2iB.2i-1C.2i+2D.2i+1
20.设一棵哈夫曼树共有n个叶结点,则该树有()个非叶结点。
A.n-1B.nC.n+1D.2n
21.设一棵有n个结点采用链式存储的二叉树,则该树共有()个指针域为空。
A.2nB.n+1C.2n+1D.2n+2
22.在一个无向图中,所有顶点的度数之和等于边数的()倍。
A.3B.2.5C.1.5D.2
23.已知如图1所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.abcedfB.aebcfdC.abcefdD.acfdeb
图1
24.已知如图1所示的一个图,若从顶点V1出发,按广度优先进行遍历,则可能得到的一种顶点序列为()。
A.V1V2V3V6V7V4V5V8B.V1V2V3V4V5V8V6V7
C.V1V2V3V4V5V6V7V8D.V1V2V3V4V8V5V6V7
25.在有序表{1,3,8,13,33,42,46,63,76,78,86,97,100}中,用折半查找值86时,经()次比较后查找成功。
A.3B.4C.6D.8
26.在有序表{2,4,7,14,34,43,47,64,75,80,90,97,120}中,用折半查找法查找值80时,经()次比较后查找成功。
A.2B.3C.4D.5
27.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。
A.31/10B.29/10C.26/10D.29/9
28.排序算法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()。
A.冒泡B.直接插入C.选择排序D.折半插入
29.一组记录的关键字序列为(37,70,47,29,31,85),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。
A.29,31,37,47,70,85B.31,29,37,47,70,85
C.31,29,37,70,47,85D.31,29,37,85,47,70
30.排序方法中,从尚未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为()排序。
A.归并B.插入C.选择D.快速
二、填空题(每小题2分)
1.把数据存储到计算机中,并具体体现数据之间的称为物理(存储)结构。
2.结构中的数据元素存在多对多的关系称为________结构。
3.结构中的数据元素存在一对一的关系称为________结构。
4.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数和算法的时间复杂度分别为________和O(n)。
5.在双向链表中,每个结点有两个指针域,一个指向结点的直接后继,另一个指向_________。
6.设有一个头指针为head的单向循环链表,p指向链表中的结点,若p->
next==_______,则p所指结点为尾结点。
7.设有一个头指针为head的单向链表,p指向表中某一个结点,且有p->
next==NULL,通过操作________,就可使该单向链表构造成单向循环链表。
8.向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行和h=s;
。
9.从一个栈顶指针为h的链栈中删除一个结点时,用x保存被删结点的值,可执行
和h=h->
(结点的指针域为next)
10.在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为________和r=s;
(结点的指针域为next)
11.两个串相等的充分必要条件是__________。
12.设有n阶对称矩阵A,用数组S进行压缩存储,当i<
j时,A的数组元素aij相应于数组S的数组元素的下标为_______。
(数组元素的下标从1开始)
13.对二叉树的遍历可分为________、、和层次四种不同的遍历次序。
14.一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为______、________。
15.一棵有n个叶结点的二叉树,其每一个非叶结点的度数都为2,则该树共有_______个结点。
16.一棵有2n-1个结点的二叉树,其每一个非叶结点的度数都为2,则该树共有_______个叶结点。
17.一棵有14个结点的完全二叉树,则它的最高层上有_______个结点。
18.________遍历二叉排序树可得到一个有序序列。
19.如图2所示的二叉树,其先序遍历序列为_________。
图2
20.如图2所示的二叉树,其前序遍历序列为_________。
21.哈希函数是记录关键字值与该记录存储地址之间所构造的。
22.二叉树为二叉排序的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。
这种说法是__________的。
(回答正确或不正确)
23.二叉树排序中任一棵子树都是二叉排序树,这种说法是_______的。
(回答正确或不正确)
24.按某关键字对记录序列排序,若在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。
三、综合题(每小题10分)
1.设一组记录的关键字序列为(49,83,59,41,43,47),采用堆排序算法完成以下操作:
(要求小根堆,并画出中间过程)
(1)以二叉树描述6个元素的初始堆
(2)以二叉树描述逐次取走堆顶元素后,经调整得到的5个元素、4个元素的堆
2.一组记录的关键字序列为(46,79,56,38,40,84)
(1)利用快速排序的方法,给出以第一个记录为基准得到的一次划分结果(给出逐次交换元素的过程,要求以升序排列)
(2)对上述序列用堆排序的方法建立大根堆,要求以二叉树逐次描述建堆过程。
3.设有序表为(13,19,25,36,48,51,63,84,91,116,135,200),元素的下标依次为1,2,……,12。
(1)说出有哪几个元素需要经过4次元素间的比较才能成功查到
(2)画出对上述有序表进行折半查找所对应的判定树(树结点用下标表示)
(3)设查找元素5,需要进行多少次元素间的比较才能确定不能查到
4.设查找表为(16,15,20,53,64,7),
(1)用冒泡法对该表进行排序(要求升序排列),写出每一趟的排序过程,通常对n个元素进行冒泡排序要进行多少趟冒泡?
第j趟要进行多少次元素间的比较?
(2)在排序后的有序表的基础上,画出对其进行折半查找所对应的判定树.(要求以数据元素作为树结点)
(3)求在等概率条件下,对上述有序表成功查找的平均查找长度.
5.
(1)对给定数列{7,16,4,8,20,9,6,18,5},依次取数列中的数据,构造一棵二叉排序树。
(2)对一个给定的查找值,简述针对二叉排序树进行查找的算法步骤,在上述二叉树中查找元素20共要进行多少次元素的比较?
6.
(1)“一棵二叉树若它的根结点的值大于左子树所有结点的值,小于右子树所有结点的值,则该树一定是二叉排序树”。
该说法是否正确,若认为正确,则回答正确,若认为不正确则说明理由?
(2)设有查找表{7,16,4,8,20,9,6,18,5},依次取表中数据构造一棵二叉排序树.对上述二叉树给出后序遍历的结果.
四、程序填空题(每空2分)
1.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行排序,完成程序中的空格部分,其中n是元素个数,要求按升序排列。
voidbsort(NODEa[],intn)
{NODEtemp;
inti,j,flag;
for(j=1;
(1);
j++);
{flag=0;
for(i=1;
(2);
i++)
if(a[i].key>
a[i+1].key)
{flag=1;
temp=a[i];
(3);
(4);
}
if(flag==0)break;
}
程序中flag的功能是(5)
2.以下是用头插法建立带头结点且有n个结点的单向链表的程序,要求结点中的数据域从前向后依次为n,n-1,……,1,完成程序中空格部分。
NODE*create2(n)
{NODE*head,*p,*q;
inti;
p=(NODE*)malloc(sizeof(NODE));
p->
next=NULL;
head=
(1);
(2);
for(i=1;
i<
=n;
i++)
{p=(3);
data=i;
if(i==1)
else
next=(4);
q->
next=(5);
return(head);
3.以下程序是先序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。
voidPreorder(structBTreeNode*BT)
{if(BT!
=NULL){
(1);
(2);
(3);
}
4.以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中,左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。
voidPostorder(structBTreeNode*BT)
(1);
(2);
(3);
答案
1.B2.D3.C4.B5.C6.D7.A8.C9.B10.D11.C12.A13.D14.A15.C16.B17.B18.A19.D20.A21.B22.D23.C24.C25.B26.C27.B28.D29.B30.C
二、填空题(每小题2分)
1.逻辑结构
2.图状(网状)
3.线性
4.n-1
5.结点的直接前驱
6.head
7.p->
next=head;
8.s->
next=h;
9.x=h->
data;
10.r->
next=s;
11.串长度相等且对应位置的字符相等
12.i(i-1)/2+j
13.先序、中序、后序
14.2i和2i+1
15.2n-1
16.n
17.7
18.中序
19.abdgcefhi
20.abdefcg
21.对应关系
22.不正确
23.正确
24.关键字相等的记录
1.
(1)
图3
(2)
图4
2.
(1)初始序列
46,79,56,38,40,84
40,79,56,38,40,84
40,79,56,38,79,84
40,38,56,38,79,84
40,38,56,56,79,84
40,38,46,56,79,84
图3
3.
(1)19,48,84,116,200
图5
(3)3次
4.
(1)原序列16152053647
15162053764n-1趟
15162075364n-j次
15167205364
15716205364
71516205364
(3)平均查找长度=(1*1+2*2+3*3)/6=14/6
图6
(2)先将给定值与根结点比较,若相等则查找成功,否则若小于根结点则在左子树中继续查找,大于根结点在右子树中查找,查找20共进行3次比较。
(1)不正确,二叉排序树要求其子树也是二叉排序树。
后续遍历5,6,4,9,8,18,20,16,7
1.
(1)j<
=n-1
(2)i<
=n-j
(3)a[i]=a[i+1]
(4)a[i+1]=temp
(5)当某趟冒泡中没有出现交换则已排好序,结束循环
2.
(1)p
(2)q=p
(3)(NODE*)malloc(sizeof(NODE))
(4)q->
next
(5)p
3.
(1)printf(“%c”,BT->
data)
(2)Preorder(BT->
left)
(3)Preorder(BT->
right)
(1)Postorder(BT->
(2)Postorder(BT->
(3)printf(“%c”,BT->