温州大学数据结构考研初试真题Word格式文档下载.docx
《温州大学数据结构考研初试真题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《温州大学数据结构考研初试真题Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
push(s,a);
push(s,b);
pop(s,&
x);
top(s,&
A.aB.bC.1D.0
6.数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到10,从首地址100开始连续存放在存储器内。
若该数组按行主序存放,则元素A[8][5]的起始地址为( );
若该数组按列主序存放,则元素A[8][5]的起始地址为( )。
A.396,217B.396,256C.256,396D.256,217
7.若一棵二叉树具有10个度为2的结点,则该二叉树的度为0的结点个数是( )。
A.9B.11C.12D.不确定
8.设有无向连通图G中的边集E={(A,B),(A,C),(A,E),(B,E),(E,D),(D,F),(F,C)}。
若从顶点A出发按深度优先搜索进行遍历,则可能得到的一种顶点序列为( )。
A.{A,B,E,C,D,F}B.{A,C,F,E,B,D}
C.{A,E,B,C,F,D}D.{A,E,D,F,C,B}
9.对于长度为9的有序顺序表,若采用折半查找法,在等概率情况下查找成功的平均查找长度为( )的值除以9。
A.20B.18C.25D.22
10.排序算法的稳定性是指( )。
A.经过排序之后,能使值相同的数据保持原顺序中的相对位置不变
B.经过排序之后,能使值相同的数据保持原顺序中的绝对位置不变
C.排序算法的性能与待排序元素的数量关系不大
D.排序算法的性能与待排序元素的数量关系密切
二、填空题(共5小题,每小题10分,共50分)
1.请完成下面顺序表的操作。
顺序表的类型如下。
typedefstruct{
ElementType*array;
/*存放元素的数组*/
intlength;
/*已经有多少元素*/
intcapacity;
/*容量*/
}SeqList;
/*在顺序表的第i个位置插入元素x*/
intinsertList(SeqList*L,inti,ElementTypex)
{
if(L->
length>
=L->
capacity){
return0;
}
if(i<
1||i>
L->
length+1){
for(k=L->
length-1;
k>
=i-1;
k--){
L->
array[k+1]=L->
array[k];
____________;
return1;
}
2.假设通讯电文中只用到A,B,C,D,E,F六个字母,它们在电文中出现的相对频率分别为:
8,3,16,10,5,20。
(1)用这些信息构造哈夫曼树;
(2)计算该哈夫曼树的带权路径长度。
这棵哈夫曼树有____________个结点;
该哈夫曼树的带权路径长度(WPL):
____________。
3.己知序列{99,5,36,7,22,17,46,12,2,19,25,28,1,92},用这些序列建小根堆。
按照从上到下,从左到右,小根堆的结点序列是:
________________________。
4.已知序列{13,2,16,3,8,28,4,10,5,6,7},请按照下面的快速排序算法,给出该序列作升序排列时前三趟的结果。
第1趟:
____________________________________;
第2趟:
第3趟:
____________________________________。
typedefintElementType;
intpartition(ElementTyper[],intlow,inthigh)
intpivot;
pivot=r[low];
while(low<
high){
while(low<
high&
&
r[high]>
=pivot){
high--;
}
r[low]=r[high];
r[low]<
low++;
r[high]=r[low];
r[low]=pivot;
returnlow;
voidqSort(ElementTyper[],intlow,inthigh)
intpos;
if(low<
pos=partition(r,low,high);
/*将r[low..high]一分为二*/
qSort(r,low,pos-1);
/*对左边子表快速排序*/
qSort(r,pos+1,high);
/*对右边子表快速排序*/
voidquickSort(ElementTyper[],intn){
qSort(r,1,n);
5.计算下图所示的AOE网中各顶点所表示的事件最早发生时间、最晚发生时间和各边所表示的活动最早开始时间、最晚开始时间,找出关键路径并计算关键路径的长度。
(1)(5分)
各事件的最早发生时间和最晚发生时间:
v0
v1
v2
v3
v4
v5
v6
v7
v8
最早发生时间
最晚发生时间
各活动的最早开始时间和最晚开始时间:
a1
a2
a3
a4
a5
a6
a7
a8
A9
a10
a11
最早开始时间
最晚开始时间
(2)关键路径:
____________;
关键路径的长度:
(5分)
三、应用题(共4小题,每小题15分,共60分)
1.设计一个高效算法,删除顺序表中所有元素值为x的元素。
假设顺序表的数据元素类型为整型。
要求:
(1)用下面指定的顺序表结构;
(2)时间复杂度为O(n)、空间复杂度为O
(1);
(3)算法用下面的函数原型表示。
/*顺序表结构*/
/*已经有多少元素*/
/*删除所有元素值为x的元素*/
voiddeleteAllX(SeqList*L,intx);
2.有两个单链表LA和LB,它们的元素均为非递减有序排列。
编写一个算法,将它们合并成一个单链表,要求合并后的单链表中的元素也是非递减有序序列,并且不需要额外申请结点空间。
例如,LA=(2,2,3),LB=(1,3,3,4),合并后为(1,2,2,3,3,3,4)。
(1)用下面指定的链表结构;
(2)算法用下面的函数原型表示。
/*链表结构*/
typedefstructNode{
ElementTypedata;
structNode*next;
}Node,*LinkList;
/*LinkList为结构指针类型*/
/*两个单链表的合并。
LA表示第1个单链表,LB表示第2个单链表。
相加到LA单链表*/
voidmergeList(LinkListLA,LinkListLB);
3.编写一个算法,完成对一棵二叉树的左右子树的交换。
二叉树的存储结构如下:
structNode*left;
structNode*right;
}BTNode,*BTree;
4.暑假,小白准备去一些城市旅游。
有些城市之间有公路,有些城市之间则没有,如下图。
为了节省经费以及方便计划旅程,小白希望在出发之前知道任意两个城市之间的最短路径。
请设计算法帮助小白解决这个问题!