资源描述
数据结构(本)期末综合练习二
一、单项选择题
1.从n个数中选取最大元素( )。
A.基本操作是数据元素间的互换 B.算法的时间复杂度是O(n)
C.算法的时间复杂度是O(n2) D.需要进行(n+1)次数据元素间的比较
2.线性表采用链式存储时,其地址( )。
A.一定是不连续的 B.必须是连续的
C.部分地址必须是连续的 D.可以连续也可以不连续
3.设head为非空的单向循环链表头指针,p指向链表的尾结点,则满足逻辑表达式( )的值为真。
A.p->next=NULL B.p->next= =head
C.p->next=head D.p= =NULL
4.带头结点的单向链表的头指针为head,该链表为空的鉴定条件是( )的值为真。
A.head = = NULL B.head->next= =head
C.head = =head->next D.head->next= = NULL
5.设顺序存储的线性表长度为n,要删除第i个元素,按课本的算法,当i=( )时,移动元素的次数为3
A.3 B.n/2 C.n-3 D.3
6.设顺序存储的线性表长度为n,对于插入操作,设插入位置是等概率的,则插入一个元素平均移动元素的次数为( )。
A.n B.n/2 C.n-1 D.n-i+1
7.一个栈的进栈序列是a,b,c,d,则栈的不也许的出栈序列是( )。
A.dcba B.bcad
C.cbad D.adbc
8.一个栈的进栈序列是5,6,7,8,则栈的不也许的出栈序列是( )(进出栈操作可以交替进行)
A.7,6,8,5 B.5,8,6,7
C.7,6,5,8 D.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.4 B.2 C.5 D.3
12.在C语言中,运用数组a存放字符串“Hello”,以下语句中对的的是( )。
A.char a[10]= “Hello”; B.char a[10]; a=“Hello”;
C.char a[10]= ‘Hello’; D.char a[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,3 B.a6,4 C.a7,2 D.a6,8
15.深度为5的完全二叉树共有20个结点,则第5层上有( )个结点(根所在结点为第一层)。
A.3 B.8 C.5 D.6
16.一棵完全二叉树共有30个结点,则该树一共有( )层(根结点所在层为第一层)。
A.6 B.4 C.3 D.5
17.已知一个图的所有顶点的度数之和为m,且m是以下4中情况之一,则m只也许是( )。
A.9 B.7 C.15 D.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.1 B.2 C.0 D.n-1
22.以下排序算法中,在一趟排序过程中,除了其它相关操作外,只进行一次元素间的互换的算法是( )。
A.冒泡 B.直接选择 C.直接插入 D.折半插入
23.在对一组元素(64,48,106,33,25,82,70,55,93)进行直接插入排序时,当进行到要把第7个元素70插入到已经排好序的子表时,为找到插入位置,需进行( )次元素间的比较(指由小到大排序)。
A.6 B.2 C.3 D.4
24.对长度为n的线性表进行顺序查找,在等概率情况下,平均查找长度为( )。
A.n B.(n+1)/2 C.2n D.n-1
25.如图,若从顶点a出发按广度优先搜索法进行遍历,则也许得到的顶点序列为( )。
a
b
e
c
d
f
g
A.acebdgf
B.acfedgb
C.abecdgf
D.abecfdg
26.如图若从顶点a出发按深度优先搜索法进行遍历,则也许得到的顶点序列为( )。
a
b
e
c
d
f
g
A.acfgedb
B.aedcbgf
C.acfebdg
D.aecbdgf
27.一棵哈夫曼树有10个非叶子结点(非终端结点),该树总共有( )个结点。
A.21 B.20 C.22 D.19
28.一棵哈夫曼树有12个叶子结点(终端结点),该树总共有( )个结点。
A.21 B.22 C.23 D.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.如图所示的二叉树,其后序遍历序列为 。
e
f
g
i
b
a
c
h
d
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为栈顶指针
struct node
{ ElemType data;
struct node *next;
};
struct node *top ;
void Push(ElemType x)
{
struct node *p;
p=(struct node*)malloc(___(1)_____);
p->data=x;
___(2)_____;
_____(3)___;
}
2.设线性表为(6,10,16,4),以下程序用说明结构变量的方法建立单向链表,并输出链表中各结点中的数据。
#define NULL 0
void main( )
{NODE a,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个结点,
struct node
{ int data;
struct node *next;
};
typedef struct node NODE
int delete(NODE *head,int i )
{
NODE *p,*q;
int j;
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指向根结点)。
void Inorder (struct BTreeNode *BT)
{ if(BT!=NULL){
(1) ;
(2) ;
(3) ;
}
}
答案
一、单项选择题(每小题2分,共30分)
1.B 2.D 3.B 4.D 5.C 6.B 7.D 8.B 9.D 10.D 11.C 12.A 13.C 14.A 15.C 16.D 17.D 18.C 19.C 20.C 21.C 22.B 23.C 24.B 25.C 26.A 27.A 28.C 29.B 30.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) 45 40 65 43 35 95
35 40 65 43 35 95
35 40 65 43 65 95
35 40 43 43 65 95
35 40 43 45 65 95
(2) 40 45 65 43 35 95
40 43 45 65 35 95
35 40 43 45 65 95
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;
16
42
32
52
57
67
82
42
82
67
52
57
32
16
102
3.(1)
102
初始树 堆
(2)102,52,42,82,16,67,32,57
22
12
130
19
150
25
15
200
100
10
4.(1)
(2)4次;3次
50
38
82
13
110
64
16
5.(1)
(2)三次;四次
6.
2
4
6
16
7
3
18
5
14
(1)
(2)中序遍历
中序 2,3,4,5,6,7,14,16,18
四、程序填空题
1.(1)sizeof (struct node)
(2)p->next=top
(3)top=p
2.
(1)&a
(2)d×next=NULL
(3)p->data
(4)p=p->next
(5)p!=NULL
3.(1)j<i-1
(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)
展开阅读全文