湖北工业大学计算机学院数据结构历年考研真题大全Word格式.docx
《湖北工业大学计算机学院数据结构历年考研真题大全Word格式.docx》由会员分享,可在线阅读,更多相关《湖北工业大学计算机学院数据结构历年考研真题大全Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
llink==hD.p->
rlink==h
3.设栈S和队列Q的初始状态为空,元素a,b,c,d,e,f依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是a,c,f,e,d,b,则栈S的容量至少应该是()。
A.6B.5C.4D.3
4.用循环链表表示队列,设队列的长度为n,若只设尾指针,则出队和入队的时间复杂度分别为()。
A.O
(1),O
(1)B.O
(1),O(n)C.O(n),O
(1)D.O(n),O(n)
5.设串s1=“ABCDEFG”,s2=“12345”,则strconcat(strsub(s1,2,strlen(s2)),strsub(s1,strlen(s2),7))的结果串是()。
A.BCDEFB.BCDEFGC.EFGD.BCDEEFG
6.某二叉树T有n个结点,设按某种顺序对T中的每个结点进行编号,编号为1,2,…,n,且有如下性质:
T中任一结点V,其编号等于V左子树上的最小编号减1,而V的右子树的结点中,其最小编号等于V左子树上结点的最大编号加1。
这时是按()编号的。
A.中序遍历序列B.前序遍历序列C.后序遍历序列D.层次遍历序列
7.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()。
A.(15,13,14,6,17,16,18)B.(15,17,16,18,13,6,14)
C.(15,6,13,14,17,16,18)D.(15,13,6,14,17,18,16)
8.已知由7个顶点组成的无向图的邻接矩阵为:
ABCDEFG
湖北工业大学二○○八年招收硕士学位研究生试卷
第2页共4页
则从顶点A出发进行深度优先遍历可以得到的序列是:
()
A.ACEDBFGB.ACDGFBEC.AECDBGFD.ABDGFEC
9.在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是()。
A.O(log2n)B.O
(1)C.O(n)D.O(nlog2n)
10.采用快速排序方法对一组数据(43,3,43,33,38,78,73)进行排序,则以43为基准进行第一趟划分后数据的排序为()(按递增序)。
A.(33,3,38,43,43,73,78)B.(3,33,38,43,43,78,73)
C.(3,33,38,43,43,73,78)D.(38,3,43,33,43,78,73)
二.填空题(每小题2分,本题共20分)
1.在下面的程序段中,对x赋值的语句的频度为______。
for(i=1;
i<
=n;
i++)
for(j=1;
j<
=i;
j++)
for(k=1;
k<
=j;
k++)
x=x+1;
2.线性表L=(a1,a2,…,an)用数组表示,假如仅在ai与ai+1(1≤i≤n-1)之间插入元素,且插入元素的概率相同,则插入一个元素平均需要移动元素的个数为______。
3.用PUSH表示入栈操作,POP表示出栈操作,若元素入栈的顺序为12345,经过操作后,出栈序列为23,栈内序列为145,相应的PUSH和POP的操作串为______。
4.用一个大小为8的数组来实现循环队列,front为当前队列头元素的前一位置,rear为队尾元素的位置,当rear和front值分别为2.7时,则当前队列中的元素的个数为______。
5.设定权集w={1,2,4,6,8,9},构造关于w的哈夫曼树,则其带权路径长度WPL=______。
6.若对满二叉树中的结点逐层编号(层号由小到大,同一层中从左到右),根结点编号为1,其它依次为2,3,…,则编号为n的结点的父结点编号为______。
7.对有17个元素的有序表A[1..17]作二分查找,在查找其等于A[7]的元素时,被比较的元素的下标依次是______。
8.设哈希表长为17,哈希函数为H(K)=Kmod17。
采用线性探测法处理冲突,将关键字序列26,25,72,38,8,18,59依次存储到散列表中。
查找元素59需要搜索次数是______。
9.在执行冒泡排序前,如果待排序文件中的n个记录顺序是逆序的,则比较次数为______。
10.设有n个结点的完全二叉树按层次序顺序存放在数组A[MAXSIZE]中,假设第一元素的下标为0,则其下标值最大的分支结点下标为______。
三.解答以下问题(本题共72分)
1.设有一带头结点的非空单链表头指针为head,P结点(指针为P)既不是首元结点,也不是尾元结点。
(1)试写出删除P结点的直接后继结点的语句序列;
(6分)
(2)试写出删除P结点的直接前趋结点的语句序列。
(10分)
2.假设循环队列定义为:
#definemaxqsize101/*设置队列的最大长度为100*/
typedefstructsqque{
第3页共4页
elementype*base;
/*初始化的动态分配存储空间*/
intlength;
/*队列长度*/
intrear;
/*队尾指针*/
}sqque;
(1)写出判断队列满和空的条件;
(4分)
(2)写出插入和删除一个元素的算法的关键语句。
(12分)
3、已知一棵树的先根序遍历序列为ABEFJCDGHKLI,后根序遍历序列为EJFBCGKLHIDA。
(1)画出该树的树形逻辑结构图;
(5分)
(2)求结点D的度和该树的度;
(3)画出由该树变换而来的二叉树。
4、设AOE网的事件集为V={V1,V2,V3,V4,V5,V6,V7},用(Vi,Vj,w)表示活动,其中Vi,Vj分别表示第i和第j个事件,w表示从Vi到Vj的持续时间,活动集为E={(V1,V2,10),(V1,V3,8),(V1,V4,20),(V2,V4,5),(V3,V4,7),(V3,V5,20),(V4,V6,6),(V5,V6,9),(V5,V7,2),(V6,V7,2)}。
(1)画出它的邻接表(表结点按顶点编号递减序排列);
(2)写出每个活动的最早开始时间和最迟开始时间;
(3)写出从V1到V7的所有关键路径。
四、算法填空题(每空2分,本题共18分)
1、设h是无头结点的单链表。
下列程序的功能是,如果线性表h的长度不小于2,则将首元结点删除并插入到表尾。
请在空格处填上适当的语句,使算法完整。
typedefstructnode{
elementypedata;
structnode*next;
}node,*linklist;
voidchange(linklist&
h)
{
linklistp,q;
if(h&
&
h->
next)
q=h;
h=
(1)
p=h;
while(p->
next)
(2);
(3);
(4);
}
}
2、假设图采用邻接表的存储定义。
下面是从图G的顶点v出发,对从v可达的顶点进行广度优先遍历的算法,请在空格处填上适当的语句,使算法完整。
第4页共4页
voidBFS(ALgraphG,intv)
intqueue[MAXVER],front,rear;
listnode*p;
front=rear=0;
printf[v].data);
visited[v]=1;
(1);
while(
(2))
{
v=queue[++front];
p=(3);
while(p!
=NULL)
{
if(visited[p->
adjvex]==0)
{
v=(4);
printf[v].data);
visited[v]=1;
queue[++rear]=v;
}
(5);
}
}
}
五、算法设计:
(要求用类C语言编写,并对所用参数和变量在适当位置加注释)(本题20分)
试编写一个函数,打印输出二叉排序树中关键字的值大于x且最靠近x的值。
要求使用非递归算法。
设二叉树的存储定义为:
typedefstructnode
intdata;
structnode*lchild,*rchild;
}BSTNode,*BSTree;
二〇〇八年招收硕士学位研究生数据结构试题答案
一、单项选择题(在每小题列出四个供选择的答案A、B、C、D中,选一个正确的答案,将其代号填在答卷纸相应题号后的下横线上,每小题2分,共20分)
1.A.2.D3.C4.A5.D 6.B7.C8.C9.B10.D
二、填空题(每小题2分,本题共20分)
1.n(n+1)(n+2)/6O(n3)2.n/23.PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH
4.35.706.n/27.A[9]A[4]A[6]A[7]8.49.n(n-1)/210.?
n/2?
-1
三、解答以下问题:
1.
(1)q=p->
next;
(2分)
p->
next=q->
next;
free(q);
(2)q=l;
while(q->
next->
next!
=p)q=q->
p=q->
q->
next=p->
free(p);
2.
(1)队列为满为条件为==m