06华中科技大学招收硕士研究生数据结构与算法分析考试试题答案Word下载.docx
《06华中科技大学招收硕士研究生数据结构与算法分析考试试题答案Word下载.docx》由会员分享,可在线阅读,更多相关《06华中科技大学招收硕士研究生数据结构与算法分析考试试题答案Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
//获取第i个顶点的入度并存于ID数组中
ID[vexnum];
//用于存储各顶点的入度,vexnum为顶点数
For(inti=0;
i!
=vexnum;
++i)
GetTotalID(i);
//依次获取每个顶点的入度
{
If(ID[i]==0)
EnQueue(i);
//将入度为0的顶点入队
For(inti=fristadj;
=adjnum;
ID[i]-=1;
//将该顶点的邻接点的入度数减1
}
While(!
isEmpty())
//将队列中各顶点依次退队并赋值给elem
Printf(elem);
//输入拓扑排序序列
5
A:
11B:
01010C:
0111D:
00E:
011111F:
10G:
0100H:
0101
应用及编程题
unsignedintisBallanced(char*string)
charbrace;
for(ihnti=0;
=strlen(string);
{
if(string[i]=='
{'
||string[i]=='
['
('
)
push(string[i]);
switch(string[i])
{
brace=pop();
case'
)'
:
if(brace!
='
return0;
break;
]'
}'
}
if(isEmpty())
return1;
else
return0;
}
该算法的时间复杂度为O(n),空间复杂度为O(n);
inttotal=0;
intInOrderTraverse(bitree*t)
InOrderTraverse(t->
lchild);
if(t->
data>
=x1)
++total;
x2)
returntotal;
rchild);
returntotal;
该算法为中序遍历,时间复杂度为O(n)
二OO七年数据结构与算法分析试题答案
BCDBD
由邻接矩阵可得该图为:
顶点
I=1
I=2
I=3
I=4
I=5
I=6
V2
10
V3
50
V4
30
V5
∞
40
V6
100
90
Vj
V1
V1,V2
V1,V2,V4
V1,V3
V1,V2,V4,V5
V1,V2,V4,V5,V6
设N=2K,T(N)=T(N/2)+N
即T(2K)=T(2K-1)+2K=T(2K-2)+2K-1+2K=……=T(20)+2K+2K-1+2K-2+……=2K+1-1=2*2logn-1=2n-1
所以时间复杂度为O(2n-1)
voidInsertSort(int*array,intnum)
inti=num-1,j=1;
while(j!
=i)
array[0]=array[i];
if(array[i]<
array[j])
for(intv=i-1;
v>
=j;
--v)
array[v-1]=array[v];
array[v]=array[0];
++j;
--i;
165432第二趟:
126543第三趟:
123654第四趟:
123465第五趟:
123456
应用编程题:
voidDelete(int*A,intlength)
for(inti=1;
=length;
for(intj=i+1;
j!
++j)
if(A[i]==A[j])
for(intk=j+1;
++k)
A[k-1]=A[k];
该算法的时间复杂度为O(n3)
voidDelete(int*A,intlength)
inti=0,j=0;
for(;
if(A[j]!
=A[i])
A[j+1]=A[i];
length=j;
二O一一年数据结构与算法分析试题答案
ABDCC
#defineSize100
intstack[Size]={0};
inttop1=0,top2=Size-1;
voidpush(inttop,intelem)
if(top1>
=top2)
cout<
<
"
StackOverFlow!
endl;
return;
switch(top)
casetop1:
stack[top]=elem;
++top1;
break;
casetop2:
++top2;
return;
voidpop(inttop,intelem)
if(top1<
0||top2>
=Size)
elem=stack[top];
--top1;
Func
(1):
1
Func
(2):
141
Func(3):
191
Func(5):
14125141
该算法的时间复杂度为O(n)
101B:
00C:
111D:
10010E:
110F:
010G:
01111H:
100I:
0110
深度优先遍历:
V1V2V4V5V7V8V9V6V3
广度优先遍历:
V1V2V3V4V5V6V7V8V9
应用编程题:
intQuickSort()
inti=0,j=8;
while(i<
j)
if(a[i]>
0&
&
a[j]<
0)
inttmp=a[i];
a[i]=a[j];
a[j]=tmp;
++i,--j;
if(a[i]<
++i;
if(a[j]>
--j;
intsum(bitree*t)
staticinttotal;
if(t==NULL)
return0;
total+=t->
data;
sum(t->
二O一二年数据结构与算法分析试题答案
BBADA
函数调用过程如下:
模式串的next值:
011112
V1V2V3V6V4V5V7
0010B:
1101C:
11001D:
111E:
000F:
0011G:
10H:
01I:
110000J:
11001
算法题
intisSum(int*a,intn,intx)
inti=0,j=n-1;
if(a[i]+a[j]==x)
if(a[i]+a[j]<
x)
i++;
if(a[i]+a[j]>
j--;
return-1;
intcountHeight(BiTreeNode*root)
if(!
root->
left&
!
right)
intlHeight=countHeight(root->
left);
intrHeight=countheight(root->
returnlHeight>
rHeight?
lHeight+1:
rHeight+1;