最新电大数据结构本期末综合练习二知识点复习考点归.docx
《最新电大数据结构本期末综合练习二知识点复习考点归.docx》由会员分享,可在线阅读,更多相关《最新电大数据结构本期末综合练习二知识点复习考点归.docx(14页珍藏版)》请在冰豆网上搜索。
最新电大数据结构本期末综合练习二知识点复习考点归
数据结构(本)期末综合练习二
一、单项选择题
1.从n个数中选取最大元素()。
A.基本操作是数据元素间的交换B.算法的时间复杂度是O(n)
C.算法的时间复杂度是O(n2)D.需要进行(n+1)次数据元素间的比较
2.线性表采用链式存储时,其地址()。
A.一定是不连续的B.必须是连续的
C.部分地址必须是连续的D.可以连续也可以不连续
3.设head为非空的单向循环链表头指针,p指向链表的尾结点,则满足逻辑表达式()的值为真。
A.p->next=NULLB.p->next==head
C.p->next=headD.p==NULL
4.带头结点的单向链表的头指针为head,该链表为空的判定条件是()的值为真。
A.head==NULLB.head->next==head
C.head==head->nextD.head->next==NULL
5.设顺序存储的线性表长度为n,要删除第i个元素,按课本的算法,当i=()时,移动元素的次数为3
A.3B.n/2C.n-3D.3
6.设顺序存储的线性表长度为n,对于插入操作,设插入位置是等概率的,则插入一个元素平均移动元素的次数为()。
A.nB.n/2C.n-1D.n-i+1
7.一个栈的进栈序列是a,b,c,d,则栈的不可能的出栈序列是()。
A.dcbaB.bcad
C.cbadD.adbc
8.一个栈的进栈序列是5,6,7,8,则栈的不可能的出栈序列是()(进出栈操作可以交替进行)
A.7,6,8,5B.5,8,6,7
C.7,6,5,8D.8,7,6,5
9.设有一个带头结点的链队列,队列中每个结点由一个数据域data和指针域next组成,front和rear分别为链队列的头指针和尾指针,要执行出队操作,用x保存出队元素的值,p为指向结点类型的指针,可执行如下操作:
p=front->next;x=p->data;然后指行()。
A.front=p->next;B.front->next=p;
C.front=p;D.front->next=p->next;
10.栈和队列的相同点是()。
A.都是后进先出B.都是后进后出
C.逻辑结构与线性表不同
D.逻辑结构与线性表相同,都是操作规则受到限制的线性表
11.在C语言中,存储字符串“ABCD”需要占用()字节。
A.4B.2C.5D.3
12.在C语言中,利用数组a存放字符串“Hello”,以下语句中正确的是()。
A.chara[10]=“Hello”;B.chara[10];a=“Hello”;
C.chara[10]=‘Hello’;D.chara[10]={‘H’,’e’,’l’,’l’,’o’};
13.设有一个10阶的对称矩阵A,采用压缩存储方式将其下三角部分以行序为主序存储到一维数组b中。
(矩阵A的第一个元素为a1,1,数组b的下标从1开始),则矩阵元素a5,3对应一维数组b的数组元素是()。
A.b[18]B.b[8]C.b[13]D.b[10]
14.设有一个15阶的对称矩阵A,采用压缩存储方式将其下三角部分以行序为主序存储到一维数组b中。
(矩阵A的第一个元素为a1,1,数组b的下标从1开始),则数组元素b[13]对应A的矩阵元素是()。
A.a5,3B.a6,4C.a7,2D.a6,8
15.深度为5的完全二叉树共有20个结点,则第5层上有()个结点(根所在结点为第一层)。
A.3B.8C.5D.6
16.一棵完全二叉树共有30个结点,则该树一共有()层(根结点所在层为第一层)。
A.6B.4C.3D.5
17.已知一个图的所有顶点的度数之和为m,且m是以下4中情况之一,则m只可能是()。
A.9B.7C.15D.8
18.以下说法正确的是()。
A.连通图G的生成树中不一定包含G的所有顶点
B.连通图G的生成树中一定要包含G的所有边
C.连通图G一定存在生成树
D.连通图G的生成树一定是唯一的
19.线性表只要以()方式存储就能进行折半查找。
A.链接B.顺序C.关键字有序的顺序D.二叉树
20.对二叉排序树进行()遍历,遍历所得到的序列是有序序列。
A.按层次B.前序C.中序D.后序
21.对n个元素进行冒泡排序若某趟冒泡中只进行了()次元素间的交换,则表明序列已经排好序。
A.1B.2C.0D.n-1
22.以下排序算法中,在一趟排序过程中,除了其它相关操作外,只进行一次元素间的交换的算法是()。
A.冒泡B.直接选择C.直接插入D.折半插入
23.在对一组元素(64,48,106,33,25,82,70,55,93)进行直接插入排序时,当进行到要把第7个元素70插入到已经排好序的子表时,为找到插入位置,需进行()次元素间的比较(指由小到大排序)。
A.6B.2C.3D.4
24.对长度为n的线性表进行顺序查找,在等概率情况下,平均查找长度为()。
A.nB.(n+1)/2C.2nD.n-1
25.如图,若从顶点a出发按广度优先搜索法进行遍历,则可能得到的顶点序列为()。
A.acebdgf
B.acfedgb
C.abecdgf
D.abecfdg
26.如图若从顶点a出发按深度优先搜索法进行遍历,则可能得到的顶点序列为()。
A.acfgedb
B.aedcbgf
C.acfebdg
D.aecbdgf
27.一棵哈夫曼树有10个非叶子结点(非终端结点),该树总共有()个结点。
A.21B.20C.22D.19
28.一棵哈夫曼树有12个叶子结点(终端结点),该树总共有()个结点。
A.21B.22C.23D.24
29.队列的插入操作在()进行。
A.队头B.队尾C.队头或队尾D.在任意指定位置
30.队列的删除操作在()进行。
A.队尾B.队头C.队头或队尾D.在任意指定位置
二、填空题
1.通常可以把某城市中各公交站点间的线路图抽象成________结构。
2.结构中的元素之间存在多对多的关系称为________结构。
3.要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行________。
4.设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结点,若逻辑表达式________的结果为真,则p所指结点为尾结点。
5.设有一个链栈,栈顶指针为hs,现有一个s所指向的结点要入栈,则可执行操作
________和hs=s;
6.设有一个链栈,栈顶指针为hs,现有一个s所指向的结点要入栈,则可执行操作s->next=hs;________。
7.在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为________;________。
8.在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,s指向一个要入队的结点,则入队操作为________;________;
9.顺序存储字符串“ABCD”需要占用________个字节。
10.循环队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效地判断栈空或栈满,若队头指针front=4,当队尾指针rear=________时队满,队列中共有________个元素。
11.一棵二叉树叶结点(终端结点)数为5,单分支结点数为2,该树共有______个结点
12.程序段char*s=”aBcD”;n=0;
while(*s!
=’\0’)
{if(*s>=’a’&&*s<=’z’)n++;
s++;
}执行后n=________
13.设一棵完全二叉树,其最高层上最右边的叶结点的编号为奇数,该叶节点的双亲结点的编号为10,该完全二叉树一共有________个结点。
14.一棵二叉树中顺序编号为5的结点(树中各结点的编号与等深度的完全二叉中对应位置上结点的编号相同),若它存在左孩子,则左孩子的编号为________。
15.结构中的数据元素存在一对多的关系称为________结构。
16.根据搜索方法的不同,图的遍历有________两种方法。
17.结构中的数据元素存在一对一的关系称为________结构。
18.结构中的数据元素存在多对多的关系称为________结构。
19.如图所示的二叉树,其后序遍历序列为。
20.一棵有n个叶结点的二叉树,其每一个非叶结点的度数都为2,则该树共有_______个结点。
21.图的深度优先搜索和广度优先搜索序列不一定是唯一的。
此断言是______的。
(回答正确或不正确)
22.串的两种最基本的存储方式分别是_______和________。
23.按某关键字对记录序列排序,若关键字的记录在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。
24.按某关键字对记录序列排序,若关键字的记录在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。
三、综合题
1.
(1)一组记录的关键字序列为{45,40,65,43,35,95}写出利用快速排序的方法,以第一个记录为基准得到的一趟划分的结果(要求给出一趟划分中每次扫描和交换的结果)
(2)同样对序列{45,40,65,43,35,95}利用直接插入排序,写出逐次插入过程(从第一个元素一直到第六个元素)。
2.设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句(不要求完整程序,
(1)、
(2)、(3)、(4)是一个连续的过程)。
(1)新开辟一个结点,使指针s指向该结点,结点的数据成员data赋值为1
(2)把该结点插入链表的尾部,释放指针s的指向
(3)删除链表的第一个结点
(4)已知p1指向另一个新结点,把它插入到p所指结点和尾结点之间
3.
(1)利用筛选过程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),画出相应的完全二叉树(不要求中间过程)
(2)写出对上述堆对应的完全二叉树进行中序遍历得到的序列
4.
(1)设有序列{10,12,15,19,22,25,100,130,150,200}画出对上述序列进行折半查找的判定树(以序列中的元素作为树的结点)
(2)为了成功查找到100需要进行多少次元素间的比较?
为了查找9,经过多少次元素间的比较可知道查找失败?
5.
(1)设有一个整数序列{50,38,16,82,110,13,64},依次取出序列中的数,构造一棵二叉排序树
(2)利用上述二叉排序树,为了查找110,经多少次元素间的比较能成功查到,为了查找15,经多少次元素间的比较可知道查找失败
6.
(1)设有查找表{5,14,2,6,18,7,4,16,3},依次取表中数据,构造一棵二叉排序树。
(2)说明如何由序列的二叉排序树得到相应序列的排序结果,对上述二叉排序给出中序遍历的结果。
四、程序填空题
1.以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为栈顶指针
structnode
{ElemTypedata;
structnode*next;
};
structnode*top;
voidPush(ElemTypex)
{
structnode*p;
p=(structnode*)malloc(___
(1)_____);
p->data=x;
___
(2)_____;
_____(3)___;
}
2.设线性表为(6,10,16,4),以下程序用说明结构变量的方法建立单向链表,并输出链表中各结点中的数据。
#defineNULL0
voidmain()
{NODEa,b,c,d,*head,*p;
a.data=6;
b.data=10;
c.data=16;
d.data=4;/*d是尾结点*/
head=
(1);
a.next=&b;
b.next=&c;
c.next=&d;
(2);/*以上结束建表过程*/
p=head;/*p为工作指针,准备输出链表*/
do
{printf(“%d\n”,(3));
(4);
}while((5));
}
3.以下函数在head为头指针的具有头结点的单向链表中删除第i个结点,
structnode
{intdata;
structnode*next;
};
typedefstructnodeNODE
intdelete(NODE*head,inti)
{
NODE*p,*q;
intj;
q=head;
j=0;
while((q!
=NULL)&&(___
(1)_____))
{
___
(2)_____;
j++;
}
if(q==NULL)
return(0);
p=___(3)_____;
___(4)_____=p->next;
free(___(5)_____);
return
(1);
}
4.以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。
voidInorder(structBTreeNode*BT)
{if(BT!
=NULL){
(1);
(2);
(3);
}
}
答案
一、单项选择题(每小题2分,共30分)
1.B2.D3.B4.D5.C6.B7.D8.B9.D10.D11.C12.A13.C14.A15.C16.D17.D18.C19.C20.C21.C22.B23.C24.B25.C26.A27.A28.C29.B30.B
二、填空题(每题2分,共24分)
1.图状
2.图状
3.q->next=p->next;
4.p->next==head;
5.s->next=hs;
6.hs=s;
7.x=f->data;f=f->next;
8.r->next=s;r=s;
9.5
10.3;5
11.11
12.2
13.21
14.10
15、树形
16、深度优先;广度优先
17.线性
18.图状(网状)
19.gdbeihfca
20.2n-1
21.正确
22.顺序存储链式存储
23.关键字相等的记录
24.关键字相等的记录
三、综合应用题
1.
(1)454065433595
354065433595
354065436595
354043436595
354043456595
(2)404565433595
404345653595
354043456595
2.
(1)s=(NODE*)malloc(sizeof(NODE));s->data=1;
(2)p->next=s;
s->next=NULL;
free(s)
(3)head=head->next;
(4)p1->next=p->next;
p->next=p1;
3.
(1)
初始树堆
(2)102,52,42,82,16,67,32,57
4.
(1)
(2)4次;3次
5.
(1)
(2)三次;四次
6.
(1)
(2)中序遍历
中序2,3,4,5,6,7,14,16,18
四、程序填空题
1.
(1)sizeof(structnode)
(2)p->next=top
(3)top=p
2.
(1)&a
(2)dnext=NULL
(3)p->data
(4)p=p->next
(5)p!
=NULL
3.
(1)j(2)q=q->next
(3)q->next
(4)q->next
(5)p
4.
(1)Inorder(BT->left)
(2)printf(“%c”,BT->data)
(3)Inorder(BT->right)