数据结构本期末综合练习文档格式.docx
《数据结构本期末综合练习文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构本期末综合练习文档格式.docx(47页珍藏版)》请在冰豆网上搜索。
x=fdata
12.算法的时间复杂度与()有关。
A.所使用的计算机B.与计算机的操作系统
C.与算法本身D.与数据结构
13.设有一个20阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第38号元素对应于矩阵中的元素是()。
A.a10,8B.a7,6C.a9,2D.a8,5
14.设有一个长度为n的顺序表,要删除第i个元素需移动元素的个数为()。
A.n-i+1B.n-iC.n-i-1D.i
15.在C语言中,分别存储“S”和‘s’,各需要占用()字节。
A.一个和两个B.两个C.一个D.两个和一个
16.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用的语句是()。
A.p=q->
nextB.p->
next=qC.p->
next=qnextD.q->
next=NULL
17.一棵有n个结点,采用链式存储的二叉树中,共有()个指针域被有效使用(即指针域为非空)。
A.n+1B.nC.n-1D.n-2
18.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的值,则执行()。
A.x=top->
data;
top=top->
next;
B.x=top->
C.top=top->
x=top->
D.top=top->
x=data;
19.在一棵二叉树中,若编号为i的结点存在双亲结点,则双亲结点的顺序编号为()。
A.i/2.0B.i/2向下取整C.2i+1D.i+2
20.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。
A.r=f->
B.r=r->
C.f=f->
D.f=r->
21.设一棵哈夫曼树共有2n+1个结点,则该树有()个非叶结点。
A.nB.n+1C.n-1D.2n
22.一个栈的进栈序列是a,b,c,d,e,则栈的不可能输出序列是()(进栈出栈可以交替进行)。
A.dceabB.edcbaC.decbaD.abcde
23.一棵完全二叉树共有4层,且第4层上有2个结点,该树共有()个非叶子结点
(根为第一层)。
A.5B.4C.3D.9
24.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。
A.26/10B.29/10C.29/9D.31/10
25.如图1所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.abedfcB.acfebdC.aebcdfD.aebcfd
图1
26.排序算法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()。
A.冒泡B.直接插入C.折半插入D.选择排序
27.一组记录的关键字序列为(56,30,89,66,48,50,94,87,100),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。
A.30,50,48,56,66,89,94,100,87B.50,30,48,56,66,89,94,87,100
C.48,30,50,56,66,89,94,87,100D.50,30,48,66,56,89,94,87,100
28.设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主存储到一维数组B中(数组下标从1开始),则矩阵中元素A8,5在一维数组B中的下标是()。
A.33B.32C.85D.41
29.线性表以()方式存储,能进行折半查找。
A.关键字有序的链接B.顺序C.关键字有序的顺序D.数组
C.多对多D.每一个元素都有一个直接前驱和一个直接后继
30.在一个无向图中,所有顶点的度数之和等于边数的()倍。
A.3B.2.5C.1.5D.2
二、填空题
1.数据的逻辑结构在计算机中的表示称为________结构。
2.栈和队列的操作特点分别是_______和________。
3.求两个n阶矩阵的乘积,算法的基本操作为________,时间复杂度为________。
4.结构中的数据元素存在多对多的关系称为________结构。
5.设有一个长度为25的顺序表,第8号元素到第25号元素依次存放的值为8,9,10,11,…25,
某人想要在第8个元素前插入1个元素7(也就是插入元素作为新表的第8个元素),他
的做法是从第8号元素开始,直到第25号元素依次向后移动1个位置,然后把7存放在
8号位置,其结果是新表中第25号元素的值为_____。
6.根据数据元素间关系的不同特性,通常可分为集合、线性、、四类基本结构。
7.在双向链表中,要在p所指的结后插入q所指的结点(设q所指的结点已赋值),
其中所用的一条语句(p->
next)->
prior=q;
的功能是使P所指结点的_______指向q。
8.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数和算法的时间复杂度分别为________和________。
9.设有一个带头结点的,头指针为head的单向链表,p指向表中某一个结点,且有
p->
next==NULL,现要删除头结点,并使该单向链表构造成单向循环链表,通过
操作head=head->
________。
10.在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行________和p->
next=s;
的操作。
11.从一个栈顶指针为top的链栈中删除一个结点时,用d保存被删结点的值,可执行
________。
(结点的指针域为next,数据域为data)
12.在二叉树的链式存储结构中,通常每个结点中设置三个域,它们是值域、
。
13循环链队列中,设front和rear分别为队头和队尾指针,(最多元素为MaxSize,采用少用一
个元素的模式),判断循环链队列为满的条件为________。
14.一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为________、________。
15.对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A相应的三元组
表共有8个元素,则矩阵A共有_______个零元素。
16.向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行s->
next=h;
和________。
17.一棵有20个结点的4度的树,其中3度结1个,2度结1个,1度结2个,则该树共有
_______个叶结点。
18.在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为________和r=s;
(结点的指针域为next)
19.一棵有18个结点的二叉树,其2度结点数的个数为8,则该树共有
_______个1度结点
20.设有一棵深度为4的完全二叉树,第四层上有5个结点,该树共有_________个结点。
(根所在结点为第1层)
21.如图2所示的二叉树,其先序遍历序列为_________。
图2
22.对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包括该元素的_______、_______和_______三项信息。
23.在查找表中,通过记录的某关键字能唯一地确定一个记录,该关键字称为_________。
24.在对一组记录(55,39,97,22,16,73,65,47,88)进行直接插入排序时,当把第7个记录65插入到有序表时,为寻找插入位置需比较_________次。
三、综合题
1.
(1)对给定权值3,1,4,4,5,6,构造深度为5的哈夫曼树。
(设根为第1层)
(2)求树的带权路径长度。
(3)链接存储上述哈夫曼树,结点中共有多少个个指针域为空,说明理由.
2.
(1)以2,3,4,7,8,9作为叶结点的权,构造一棵哈夫曼树(要求每个结点的左子树根结点的权小于等于右子树根结点的权),给出相应权重值叶结点的哈夫曼编码。
(2)一棵哈夫曼树有n个叶结点,它一共有多少个结点?
简述理由?
3.
(1)如下的一棵树,给出先序遍历序列
(2)把1,2,3,4,5,6,7,8,9填人,使它成为一棵二叉排序树
提示:
设图中的树是二叉排序树,找出中序遍历序列与1,2,…9的对应关系
(3)请在该树中再插入一个结点3.5作为叶结点,并使它仍然是一棵二叉排序树。
图3
4.一组记录的关键字序列为(46,79,56,38,40,84)
(1)利用快速排序的方法,给出以第一个记录为基准得到的一次划分结果(给出逐次交换元素的过程,要求以升序排列)
(2)对上述序列用堆排序的方法建立大根堆,要求以二叉树逐次描述建堆过程。
5.设查找表为(5,6,7,8,9,10,11,12,13,14)
(1)画出对上述有序表进行折半查找所对应的判定树(要求以数据元素作为树结点)
(2)给出二叉排序树的定义,针对上述折半查找所对应的判定树的构造过程,说明判定树
是否是二叉排序树(设树中没有相同结点)?
(3)为了查找元素5.5,经过多少次元素间的比较才能确定不能查到?
6.设查找表为(50,60,75,85,96,98,105,110,120,130)
(1)说出进行折半查找成功查找到元素120需要进行多少次元素间的比较?
(2)为了折半查找元素95,经过多少次元素间的比较才能确定不能查到?
(3)画出对上述有序表进行折半查找所对应的判定树(要求以数据元素作为树结点)
四、程序填空题
1.以下函数为直接选择排序算法,对a[1],a[2],…a[n]中的记录进行直接选择排序,完成程序中的空格
typedefstruct
{intkey;
……
}NODE;
voidselsort(NODEa[],intn)
{
inti,j,k;
NODEtemp;
for(i=1;
i<
=___
(1)_____;
i++)
{
k=i;
for(j=i+1;
j<
=___
(2)_____;
j++)
if(a[j].key<
a[k].key)__(3)______;
if(i!
=k)
{
temp=a[i];
___(4)_____;
____(5)____;
}
}
}
2.以下是用尾插法建立带头结点且有n个结点的单向链表的程序,结点中的数据域从前向后依次为1,2,3,……,n,完成程序中空格部分。
NODE*create(n)
{NODE*head,*p,*q;
inti;
p=(NODE*)malloc(sizeof(NODE));
head=
(1);
(2);
pnext=NULL;
/*建立头结点*/
for(i=1;
i<
=n;
i++)
{p=(3);
pdata=i;
pnext=NULL;
qnext=(4);
(5);
return(head);
3.设有一个头指针为head的不带头结点单向链表,且p、q是指向链表中结点类型的指针变量,p指向链表中某结点a(设链表中没有结点的数据域与结点a的数据域相同),写出相关语句
(1).使该单向链表成为单向循环链表
(2)删去a结点
q=p;
x=p->
while(q->
next!
=NULL)q=q->
__
(1)___
q=p;
p=p->
while(p->
data!
=x)
{q=p;
__
(2)___
__(3)___
4.以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。
voidInorder(structBTreeNode*BT)
{if(BT!
=NULL){
(1);
(3);
期末复习一答案
1.C2.B3.A4.C5.A6.D7.C8.A9.D10.D11.C12.C13.C14.B15.D16.C17.C18.A19.B20.C21.A22.A23.B24.B25.C26.C27.B28.A29.C30.D
1.物理(存储)
2.后进先出、先进先出
3.乘法O(n3)
4.图状(网状)
5.8
6.树形图状
7.直接前驱的左指针
8.n-1,O(n)、
9.p->
next=head;
10.s->
next=p->
11.d=top->
top=top->
12.左指针右指针
13.front==(rear+1)%MaxSize
14.2i2i+1
15.34
16.h=s;
17.13
18.r->
19.1
20.12
21.215347896
22.行下标、列下标、非零元素值
23.主关键字
24.3
三、综合应用题
1.
(1)
图4
(2)WPL=3*4+1*4+4*3+6*2+4*2+5*2=58
(3)共11个结点,22个指针域,除根结点外,每个结点对应一个指针域.,共10个指针域非空,故
有22-10=12个空指针域,
(1)
图5
2:
1110
3:
1111
4:
110
7:
00
8:
01
9:
10
(2)2n-1个,因为非叶结点数比叶结点数少一个。
3.
(1)A1A2A4A7A8A5A9A3A6
(2)
(3)
图6
4.
(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
(2)
图6
5.
(1)
图7
(2)二叉排序树或者是一棵空树,或者是一棵具有下列性质的二叉排:
若它的左子树
非空,则左子树的所有结点的值都小于它的根结点的值;
若它的右子树非空,则右子
树的所有结点的值都大于(若允许结点有相同的值,则大于等于)它的根结点的值;
左,右子树也是一棵二叉排序树,按定义判定树是二叉排序树。
(3)3次
6.
(1)3次
(2)4次
图8
1.
(1)n-1
(2)n
(3)k=j
(4)a[i]=a[k]
(5)a[k]=temp
2.
(1)p
(2)q=p
(3)(NODE*)malloc(sizeof(NODE))
(4)p
(5)q=p
3.
(1)q->
next=head;
(2)p=p->
(3)q->
4.
(1)Inorder(BT->
left)
(2)printf(“%c”,BT->
data)
(3)Inorder(BT->
right)
期末练习二
1.结构中的元素之间存在一对多的关系是()。
A.集合B.线性结构
C.树形结构D.图状结构
2.在C语言中,顺序存储长度为3的字符串,需要占用()个字节。
A.4B.3C.6D.12
3.对不带头结点的单向链表,判断是否为空的条件是()(设头指针为head)。
A.head==NULLB.head->
next==NULL
C.head->
next==headD.head=NULL
4.串函数StrCat(a,b)的功能是进行串()。
A.比较B.复制C.赋值D.连接
5.在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,可用的语句是()。
A.p=q->
B.p->
next=q;
C.p->
next=q->
D.p=p->
q->
next=p;
6.一棵有n个结点采用链式存储的二叉树中,共有()个指针域为空。
A.n+1B.nC.n-1D.n-2
7.一个栈的进栈序列是1,2,3,4,5,则栈的不可能输出序列是()(进栈出栈可以交替进行)。
A.12345B.43512C.45321D.54321
8.设一棵哈夫曼树共有n个非叶结点,则该树有()个叶结点。
A.nB.n+1C.n-1D.2n
9.一个队列的入队序列是2,4,6,8,按该队列的输出序列使各元素依次入栈,该栈的可能输出序列是()。
A.8,6,4,2B.6,2,4,8
C.8,4,2,6D.8,2,4,6
10.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的值,则执行()。
A.x=top->
top=topnext;
B.x=top->
D.top=top->
11.在一个链队中,假设f和r分别为队头和队尾指针,已生成一个结点p,要为结点p赋
值x,并入队的运算为()。
A.p->
data=x;
p->
next=NULL;
f->
f=p;
B.p->
next=NULL;
r->
r=p;
C.p->
next=r;
r=s;
D.p->
next=f;
f=s;
12.一棵完全二叉树共有5层,且第5层上有六个结点,该树共有()个结点。
A.30B.20C.21D.23
13.设有一个25阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素.a7,6在一维数组B中的下标是()。
A.34B.14C.26D.27
14.在一个无向图中,所有顶点的度数之和等于边数的()倍。
A.3B.2.5C.1.5D.2
15.以下程序段的结果是c的值为()。
chara[5]=“1236789”,int*p=a,intc=0;
while(*p++)c++;
A.8,B.7C.10D.12
16.已知如图1所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.V1V2V4V8V5V3V6V7B.V1V2V4V5V8V3V6V7
C.V1V2V4V8V3V5V6V7D.V1V3V6V7V2V4V5V8
图1
17.一棵有23个结点,采用链式存储的二叉树中,共有()个指针域为空。
A.24B.25C.23D.45
18.已知如图2所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.abcedfB.abcefdC.aebcfdD.acfdeb
19.在一棵二叉树中,若编号为i的结点是其双亲结点的左孩子,则双亲结点的顺序编号为()。
A.i/2B.2i-1C.2i+1D.i/2-1
20.对二叉排序树进行()遍历,可以使遍历所得到的序列是有序序列。
A.按层次B.后序C.中序D.前序
21.设一棵哈夫曼树共有2n+1个叶结点,则该树有()个叶结点。
A.n-1B.nC.n+1D.2n
22.在有序表{2,4,7,14,34,43,47,64,75,80,90,97,120}中,用折半查找法查找值80时,经()次比较后查找成功。
A.4B.2C.3D.5
23.已知如图3所示的一个图,若从顶点a出发,按深度优先搜索法进行遍历,则可能