浙江师范大学计算机考研数据结构试题汇总.docx

上传人:b****8 文档编号:10663039 上传时间:2023-02-22 格式:DOCX 页数:10 大小:60.15KB
下载 相关 举报
浙江师范大学计算机考研数据结构试题汇总.docx_第1页
第1页 / 共10页
浙江师范大学计算机考研数据结构试题汇总.docx_第2页
第2页 / 共10页
浙江师范大学计算机考研数据结构试题汇总.docx_第3页
第3页 / 共10页
浙江师范大学计算机考研数据结构试题汇总.docx_第4页
第4页 / 共10页
浙江师范大学计算机考研数据结构试题汇总.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

浙江师范大学计算机考研数据结构试题汇总.docx

《浙江师范大学计算机考研数据结构试题汇总.docx》由会员分享,可在线阅读,更多相关《浙江师范大学计算机考研数据结构试题汇总.docx(10页珍藏版)》请在冰豆网上搜索。

浙江师范大学计算机考研数据结构试题汇总.docx

浙江师范大学计算机考研数据结构试题汇总

浙江师范大学2008年计算机考研数据结构试题

数据结构

一、判断题用√和×表示对和错(每小题1.5分,共15分)

   1.数据元素是数据的最小单位。

 (×)

   2.当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省。

 (×)

   3.数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入、删除等操作。

 (×)

   4.在树中,如果从结点K出发,存在两条分别到达K’,K”的长度相等的路径,则结点K’和k”互为兄弟。

 (√)

   5.最佳两叉排序树的任何子树都是最佳的。

 (√)

   6.算法和程序没有区别,所以在数据结构中两者是通用的。

 (×)

   7.顺序存储方式只能用于存储线性结构。

 (×)

   8.在线性表链式存储结构中, 逻辑上相邻的元素在物理位置上不一定相邻。

 (√)

   9.如果某种排序算法是不稳定的,则该算法没有实际意义。

 (×)

   10.当两个字符出现的频率相同时,则其哈夫曼编码也相同。

 (×)

二、单项选择题(每小题3分,共60分)

   1.某个向量第一元素的存储地址为100,每个元素的长度为2,则第五个元素的地址是______。

   A.110   B.108   C.100   D.120

   2.栈和队列的共同特点是______。

   A.都是先进后出   B.都是先进先出  C.只允许在端点处插入和删除元素   D.没有共同点

   3.对线性表进行二分查找时,要求线性表必须______。

   A.以顺序方式存储   B.以链接方式存储   C.以顺序方式存储,且结点按关键字有序排序   D.以链接方式存储,且结点按关键字有序排序

   4.一组记录的排序码为(47、78、61、33、39、80),则利用堆排序的方法建立的初始堆为______。

A.78、47、61、33、39、80   B.80、78、61、33、39、47   

C.80、78、61、47、39、33   D.80、61、78、39、47、33

   5.将一棵有50个结点的完全二叉树按层编号,则对编号为25的结点x,该结点______。

   A.无左、右孩子   B.有左孩子,无右孩子   C.有右孩子,无左孩子   D.有左、右孩子

   6.用快速排序方法对包含有n个关键字的序列进行排序,最坏情况下的时间复杂度为______。

   A.O(n)   B.O(log2n)   C.O(nlog2n)   D.O(n2)

7.在最坏的情况下,查找成功时二叉排序树的平均查找长度__(n+1)/2____。

   A.小于顺序表的平均查找长度   B.大于顺序表的平均查找长度   C.与顺序表的平均查找长度相同   D.无法与顺序表的平均查找长度比较

   8.对序列(22,86,19,49,12,30,65,35,18)进行一趟排序后得到的结果如下:

(18,12,19,22,49,30,65,35,86),则可以认为使用的排序方法是______。

   A.选择排序   B.冒泡排序   C.快速排序   D.插入排序

   9.在线性表的下列存储结构中,读取元素花费时间最少的是______。

   A.顺序表   B.双链表   C.循环链表   D.单链表

   10.具有100个结点的二叉树中,若用二叉链表存储,其指针域部分用来指向结点的左、右孩子,其余______个指针域为空。

   A.50   B.99   C.100   D.101(二叉树中除根结点外都有一个分支进入,共n-1个指针)

   11.从逻辑上可以把数据结构划分为______。

   A.动态结构和静态结构   B.紧凑结构和非紧凑结构   C.线性结构和非线性结构   D.内部结构和外部结构

   12.以下数据结构中属于非线性结构的是______。

   A.树   B.字符串   C.队列   D.栈

13.在单链表中,若*P节点不是最后节点,在*P之后插入节点*S,则其操作是______。

   A.s->next=p;p->next=s;   B.s->next=p->next;p->next=s;   C.s->next=p->next;p=s;   D.p->next=s;s->next=p;

   14.栈是一种操作受限的数据结构,其插入和删除必须在______进行。

   A.栈顶   B.栈底   C.任意位置   D.指定位置

   15.设T为一颗深度为6的二叉树,则T拥有的最多结点数是______。

   A.64   B.63   C.32   D.31

   16.若用冒泡法对序列(18,14,6,27,8,12,16,52,10,26,47,29,41,24)进行从小到大排序,共要进行的比较次数为______。

   A.33   B.45   C.70   D.91

   17.算法的时间复杂度取决于______。

   A.问题的规模   B.待处理数据的初态   C.计算机的配置   D.A和B

   18.对序列(22,86,19,49,12,30,65,35,18)进行一趟排序后得到的结果如下:

(18,12,19,22,49,30,65,35,86),则可以认为使用的排序方法是______。

   A.选择排序   B.希尔排序   C.快速排序   D.插入排序

   19.若用一个大小为6的数组来实现循环队列,且当前的rear和front的值分别为0和3,当从队列中删除一个元素,再插入两个元素后,rear和front的值分别为______。

   A.1,5   B.2,4   C.4,2   D.5,1(队头front删除,队尾rear插入)

   20.对长度为3的顺序表进行搜索,若搜索第一、第二、第三个元素的概率分别为1/2,1/3和1/6,则搜索任一元素的平均搜索长度为______。

   A.5/3   B.2   C.7/3   D.4/3(顺序表查找是从最后一个元素顺次向前比较。

最后一个比较1次,最前边比较n次。

ASL=nP1+(n-1)P2+……+2Pn-1+Pn)

三、算法阅读选择题(每小题3分,共30分)

   【算法填空1】在画有横线的地方填写合适的内容,并依据以下提供选择的答案,回答

(1)~(5)中的问题。

   对顺序存储的有序表进行二分查找的递归算法。

intBinsch(ElemTypeA[],intlow,inthigh,KeyTypeK)

   {

   if(low<=high)

   {

intmid=

(1)D(low+high)/2;

   if(K==A[mid].key)returnmid;

   elseif(K

(2)C.Binsch(A,low,mid-1,K);

   else

   return(3)B.Binsch(A,mid+1,high,K);

   }

   Else

   return(4)A

   1~4问题可供选择的答案:

   A.1   B.Binsch(mid+1,high)   C.Binsch(low,mid-1)   D.(low+high)/2

   5、试问该递归算法的渐近时间复杂度是(5)。

   A.O(n)   B.O(log2n)   C.O(nlog2n)   D.O(n2)

【算法填空2】在画有横线的地方填写合适的内容,并依据以下提供选择的答案,回答(6)~(10)中的问题。

   位数对调:

输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的数。

   例如:

输入3位自然数:

234,输出n=432。

//输入的数据为整数

//ProgramThreebit

   #include

   voidmain()

   {

   intx,n,a,b,c

   printf("Input3bitnaturedata:

")

   scanf("%d",&n)

   if(n>99&&n<1000){

   a=(6) //求百位数n/100

   b=(7) //求十位数(n-a*100)/10

   c=(8) //求个位数n%10

   x=(9) //求新数Xc*100+b*10+a

   printf("Number=%d/n",x);

   }

   elseprintf("Inputerror!

/n");

   }

   6~9问题可供选择的答案如下:

   A.n/100   B.(n-a*100)/10   C.n%10   D.c*100+b*10+a

   10、试问该算法的渐近时间复杂度是(10)。

   A.O(n)   B.O(log2n)   C.O(nlog2n)   D.O

(1)

四、应用题(每小题6分,共24分)

1.给定二叉树的中序遍历结果为abc, 请画出能得到此中序遍历结果的二叉树的所有形态。

对应的几种先根序:

bac,acb,abc,cba,cab

   2.请画出下面无向图的邻接矩阵和邻接表。

1000

0

1

1

2

3

^

1

2

0

2

4

^

2

3

0

1

3

4

^

3

4

0

2

4

^

4

5

1

2

3

^

3.已知序列{15,18,60,41,6,32,83,75,95}。

请给出采用冒泡排序法对该序列作升序排序时的每一趟的结果。

15,18,41,6,32,60,75,83,95

15,18,6,32,41,60,75,83

15,6,18,32,41,60,75

6,15,18,32,41,60

6,15,18,32,41

intflg=1;//如果上一趟比较没有交换,终止比较

inti,j;

For(i=0;i

flg=0;

for(j=0;j

if(A[j]>A[j+1]){t=A[j];A[j]=A[j+1];A[j+1]=t;flg=1;}

}

}

4.有一份电文中共使用五个字符:

a、b、c、d、e,它们的出现频率依次为8、14、10、4、18,请构造相应的哈夫曼树(左子树根结点的权小于等于右子树根结点的权),求出每个字符的哈夫曼编码。

A:

001B:

10C:

01D:

000E:

11

WPL=3*(4+8)+2*(10+14+18)=3*12+2*42=36+84=122

   五、算法设计题(21分)

   1.以邻接表为存储结构,写出连通图的深度优先搜索算法。

 (9分)

//------------邻接表结构------------------

typedefstructArcNode

{

intadjvex;

intweight;

int*info;

structArcNode*nextarc;

}ArcNode;

typedefstructVNode

{

VertexTypedata;

ArcNode*firstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

typedefstruct

{

AdjListvertices;

intvexnum,arcnum;

intkind;

}ALGraph;

Intvisited[MaxSize];

//深度优先遍历

voiddfs(ALGraphG,intv)

{

ArcNode*p;

cout<

visited[v]=1;

p=G.vertices[v].firstarc;

while(p!

=NULL)

{

if(!

visited[p->adjvex])

dfs(G,p->adjvex);

p=p->nextarc;

}

return;

}

voiddfs1(ALGraphG)

{

inti;

cout<<"深度优先遍历:

"<

for(i=0;i

for(i=0;i

if(visited[i]==0)

dfs(G,i);

}

   2.如下图所示,设有两个栈s1和s2共亨同一数组存储空间stack[1m],其中栈s1的栈底设在stack[1]处,而栈s2的栈底设在stack[m]处,请编写栈s1和s2的进栈操作push(i,x)和退栈操作pop(i),其中i=1、2,分别表示栈s1和s2。

要求:

仅当整个空间stack[1m]占满时才产生上溢。

 (12分)

typedefElemTypeint;

inttop[3];//位置0未用

ElemTypestack[m+1];//位置0未用

initStack(){

top[1]=0;top[2]=m+1;

}

intpush(inti,ElemTypex){

if(top[1]+1==top[2])return0;//栈满

if(i==1){

stack[++top[1]]=x;

}

elsestack[--top[2]]=x;

return1;

}

ElemTypepop(inti){

if(i==1){

if(top[1]>0)

returnstack[top[1]--];

}

else{

if(top[2]!

=m+1)

returnstack[top[2]++];

}

returnNULL;//栈空

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1