吉林大学珠海学院数据结构期末卷.docx

上传人:b****3 文档编号:4873987 上传时间:2022-12-11 格式:DOCX 页数:10 大小:168.69KB
下载 相关 举报
吉林大学珠海学院数据结构期末卷.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

吉林大学珠海学院数据结构期末卷

2011A参考答案

【字号:

大中小】

2011年春季学期计算机科学与技术、软件工程、网络工程专业

《数据结构》

期末试卷答案(A卷)

一、          单项选择题(本大题共15小题,每小题1分,共15分 答案写在答题卡上)×

答题卡 题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

   答案

C

D

D

A

D

A

A

A

A

A

B

B

B

B

B

      评分标准:

每题回答正确得1分,错误不得分。

二、           判断题(本大题共5小题,每小题1分,共5分正确的打“√”,错误打“×”)

                 1、√ 2、√  3、√ 4、× 5、×

评分标准:

每题回答正确得1分,错误不得分。

三、应用题(6个小题,各题的分数在小题中给出,共60分)

1.(5分)将首元结点删除并插入到表尾(设链表长度大于1)。

评分标准:

全对得满分,错误酌情扣分。

2. (5分)3个:

 34215 ,34251, 34521

评分标准:

全对得满分,错1个扣1分,错2个扣3分。

3.(5分)Head(Tail(Tail((apple,pear,banana,orange))))

评分标准:

全对得满分,不全对酌情减分。

4.(10分)

 

 

A:

0

B:

1001

C:

101

D:

10001

E:

11

F:

10000 

评分标准:

全题10分,哈夫曼树7分,哈夫曼编码3分。

错误酌情扣分

5.

(1)

 

 

  

  

(2)

 

(3)

                               

 

                    

 

 

  关键路径:

顶点序列是0-->1-->2-->3-->5  路径长度=4+5+4+3=16

   评分标准:

全题15分,

(1)

(2)小题各4分,(3)小题7分。

错误酌情扣分

6.

 

       

  

                         

(1)二叉排序树                                                  

(2)最佳二叉排序树

 

                 (3)平衡二叉排序树

                    

 

                                      1)LR型                                                         2)RL型

         

  

            

 

 

                                 3)RR型                                           4)结果平衡二叉树

 

 

 

(1)ASLsuss=(1*1+2*2+3*3+4*3+5*2+6*1)/12=42/12

(2)ASLsuss=(1*1+2*2+4*3+5*4)/12=37/12

(3)ASLsuss=(1*1+2*2+4*3+4*4+5*1)/12=38/12

评分标准:

第1小题5分,画图4分,平均查找长度1分,错误酌情扣分;

第2小题3分,画图2分,平均查找长度1分,错误酌情扣分;

第3小题7分,画图6分,平均查找长度1分,错误酌情扣分。

7.因为(11-1)%(4-1)=1,所以加“虚段”,第一次由两个段合并。

最佳归并树如图

                          

 

 

 

 

 

 

 

                        评分标准:

本小题5分,错误酌情扣分。

 

四、算法设计题(第1和3题各5分,第2题10分,共20分)

1.双向栈S是在一个数组空间V[m]内实现的两个栈,栈底分别处于数组空间的两端。

试为此双向栈设计栈初始化Init(S)、入栈Push(S,i,x)(x是和栈中元素有相同类型的变量)、出栈Pop(S,i)算法,其中i为0或1,用以指示栈号。

#defineElemTypeint    ∥假设元素类型为整型

typedefstruct 

{ElemTypeV[m];   ∥栈空间

 inttop[2];      ∥top为两个栈顶指针的数组

}stk;

stkS;            ∥S是如上定义的结构类型变量,为全局变量

(1)栈初始化

intInit()

 {S.top[0]=-1;

  S.top[1]=m;

  return1; //初始化成功

}

(2)入栈操作:

intpush(stkS,inti,intx)

∥i为栈号,i=0表示左栈,i=1为右栈,x是入栈元素。

入栈成功返回1,失败返回0

{if(i<0||i>1){printf(“栈号输入不对\n”);exit(0);}

if(S.top[1]-S.top[0]==1){printf(“栈已满\n”);return(0);}

switch(i)

 {case0:

S.V[++S.top[0]]=x;return

(1);break;

case1:

S.V[--S.top[1]]=x;return

(1);

}

}∥push

(3)退栈操作

     ElemTypepop(stkS,inti)

     ∥退栈。

i代表栈号,i=0时为左栈,i=1时为右栈。

退栈成功时返回退栈元素

∥否则返回-1

     {if(i<0||i>1){printf(“栈号输入错误\n”);exit(0);}

       switch(i)

        {case0:

if(S.top[0]==-1){printf(“栈空\n”);return(-1);}

                 elsereturn(S.V[S.top[0]--]);

         case1:

if(S.top[1]==m{printf(“栈空\n”);return(-1);}

                 elsereturn(S.V[S.top[1]++]);

      }∥switch     }∥算法结束

(4)判断栈空

intEmpty();

{return(S.top[0]==-1&&S.top[1]==m);

}

评分标准:

正确得5分,错误酌情减分。

 

2、给定mxn矩阵A[m][n](m和n都是大于0的正整数),并设A[i][j]≤A[i][j+1](0≤i≤m-1,0≤j≤n-2)和A[i][j]≤A[i+1][j](0≤i≤m-2,0≤j≤n-1)。

设x和矩阵元素类型相同,设计一算法判定x是否在A中,要求时间复杂度为O(m+n)。

voidSearch(ElemTypeA[][],intm,intn,ElemTypex)

{∥m*n矩阵A元素按行和按列有序,本算法查找x是否在矩阵A中

i=0;j=n-1;flag=0;∥flag是成功查到x的标志

while(i<=m-1&&j>=0&&!

flag)

      if(A[i][j]==x)flag=1;

      elseif(A[i][j]>x)j--;

             elsei++;

if(flag)printf(“A[%d][%d]=%d”,i,j,x);∥假定x为整型

elseprintf(“矩阵A中无%d元素\n”,x);

  }∥search

评分标准:

正确得5分,错误酌情减分。

 

3、(5分)请写出从图的邻接表表示转换成邻接矩阵表示的算法。

void AdjListToAdjMatrix(AdjListgl,AdjMatrixgm)

∥将图的邻接表表示转换为邻接矩阵表示

{for(i=0;i

      for(j=0;j

    for(i=0;i

      {p=gl[i].firstarc;

       while(p!

=null)

{gm[i][p->adjvex]=1;p=p->next;}

      }∥for

}∥算法结束

评分标准:

正确得5分,错误酌情减分。

 

4.荷兰国旗问题:

设有一个仅有红、白、蓝三种颜色的条块组成的条块序列。

编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案。

voidDutchFlag(intR[],intn)

∥对红、白、篮三种颜色的条块,经排序形成荷兰国旗

{inti=1,j=1,k=n;  ∥指针初始化,j到k是待排序元素

while(j<=k)

 if(r[j]==1)       ∥红色

    {r[i]<-->r[j];i++;j++;}

 elseif(r[j]==2)j++;         ∥白色

else{r[j]<-->r[k];k--;}∥兰色

 }

评分标准:

正确得5分,错误酌情减分。

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

当前位置:首页 > 人文社科 > 文学研究

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

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