温州大学数据结构考研初试真题.docx
《温州大学数据结构考研初试真题.docx》由会员分享,可在线阅读,更多相关《温州大学数据结构考研初试真题.docx(7页珍藏版)》请在冰豆网上搜索。
温州大学数据结构考研初试真题
(请考生在答题纸上答题,在此试题纸上答题无效)
一、单项选择题(共10小题,每小题4分,共40分)
1.在数据结构中,与所使用的计算机无关的是数据的( )。
A.逻辑结构B.存储结构
C.逻辑结构和存储结构D.物理结构
2.算法的时间复杂度属于一种( )。
A.事前统计的方法B.事前分析估算的方法
C.事后统计的方法D.事后分析估算的方法
3.线性表中的所有元素都有一个前驱元素和后继元素。
这个说法是( )。
A.正确的B.错误的
4.链式存储的存储结构所占存储空间( )
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B.只有一部分,存放结点值
C.只有一部分,存储表示结点间关系的指针
D.分两部分,一部分存放结点值,另一部分存放结点所占单元数
5.经过以下栈运算后,x的值是( )。
initStack(s);push(s,a);push(s,b);pop(s,&x);top(s,&x);
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){
return0;
}
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(lowwhile(low=pivot){
high--;
}
r[low]=r[high];
while(lowlow++;
}
r[high]=r[low];
}
r[low]=pivot;
returnlow;
}
voidqSort(ElementTyper[],intlow,inthigh)
{
intpos;
if(lowpos=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)算法用下面的函数原型表示。
/*顺序表结构*/
typedefintElementType;
typedefstruct{
ElementType*array;/*存放元素的数组*/
intlength;/*已经有多少元素*/
intcapacity;/*容量*/
}SeqList;
/*删除所有元素值为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.编写一个算法,完成对一棵二叉树的左右子树的交换。
二叉树的存储结构如下:
typedefstructNode{
ElementTypedata;
structNode*left;
structNode*right;
}BTNode,*BTree;
4.暑假,小白准备去一些城市旅游。
有些城市之间有公路,有些城市之间则没有,如下图。
为了节省经费以及方便计划旅程,小白希望在出发之前知道任意两个城市之间的最短路径。
请设计算法帮助小白解决这个问题!