 2009年1月山东自考数据结构导论试题
             2009年1月山东自考数据结构导论试题 
一、单项选择题(本大题共15小题,每小题2分,共30分) 
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选、多选或未选均无分. 
1.数据的不可分割的最小标识单位是(  ) 
A.数据项 
B.数据记录 
C.数据元素 
D.数据变量
2.for(i=0;i for(j=0;j c[i][j]=0; 
for(i=0;i for(j=0;j for(k=0;k c[i][j]=c[i][j]+a[i][k]*b[k][j]; 
上列程序的时间复杂度为(  ) 
A.O(m+n×t) 
B.O(m+n+t) 
C.O(m×n×t) 
D.O(m×t+n) 
3.若线性表最常用的操作是存取第i个元素及其前趋的值,那么最节省操作时间的存储方式是(  ) 
A.单链表 
B.双链表 
C.单循环链表 
D.顺序表
4.设单链表中指针p指向结点A,要删除A之后的结点(若存在),则修改指针的操作为(  ) 
A.p—>next=p—>next—>next 
B.p=p—>next 
C.p=p—>next—>next 
D.p—>next=p
5.向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行的操作为(  ) 
A.hs—>next=s; 
B.s—>next=hs;hs=s; 
C.s—>next=hs—>next;hs—>next=s; 
D.s—>next=hs;hs=hs—>next;
6.设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素.如果队列中元素的个数为11,front的值为25,则rear应指向的元素是(  ) 
A.Q[4] 
B.Q[5] 
C.Q[14] 
D.Q[15]
7.定义二维数组A[1‥8,0‥10],起始地址为LOC,每个元素占2L个存储单元,在以行序为主序的存储方式下,某数据元素的地址为LOC+50L,则在以列序为主序的存储方式下,该元素的存储地址为(  ) 
A.LOC+28L 
B.LOC+36L 
C.LOC+50L 
D.LOC+52L
8.具有n个结点的二叉树,拥有指向孩子结点的分支数目是(  ) 
A.n-1 
B.n 
C.n+1 
D.2n
9.对一棵有100个结点的完全二叉树按层序编号,则编号为49的结点,它的左孩子的编号为(  ) 
A.99 
B.98 
C.97 
D.50
10.有m个叶子结点的哈夫曼树,其结点总数是(  ) 
A.2m-1 
B.2m 
C.2m+1 
D.2(m+1)
11.有n个结点的无向图的边数最多为(  ) 
A.n+1 
B.n(n-1)/2 
C.n(n+1) 
D.2n(n+1) 
12.设图的邻接矩阵为,则该图为(  ) 
A.有向图 
B.无向图 
C.强连通图 
D.完全图
13.二分查找算法的时间复杂度是(  ) 
A.O(n2) 
B.O(nlog2n) 
C.O(n) 
D.O(log2n)
14.已知8个元素(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为(  ) 
A.4 
B.5 
C.6 
D.7
15.采用排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法是(  ) 
A.插入和快速 
B.冒泡和快速 
C.选择和插入 
D.选择和冒泡
三、应用题(本大题共5小题,每小题6分,共30分) 
29.已知一棵二叉树的前序序列是ABCDEFG,中序序列是CBDAEGF.请构造出该二叉树,并给出该二叉树的后序序列. 
30.将题30图所示的由三棵树组成的森林转化为一棵二叉树.
 
题30图 
31.已知某图的邻接表存储结构如题31图所示:
 
题31图 
(1)画出该图. 
(2)根据该邻接表从顶点A出发,分别写出按深度优先搜索法和广度优先搜索法进行遍历的结点序列. 
32.假定采用H(k)=kmod7计算散列地址,引用线性探测的开放定址法解决冲突,试题在0~6的散列地址空间中,对关键字序列(38,25,74,63,52,48)构造散列表,并求出等概率情况下查找成功的平均查找长度. 
33.用快速排序法对数据序列(49,38,65,97,16,53,134,27,39)进行排序,写出其第一趟排序的全过程.
四、算法设计题(本大题共2小题,每小题7分,共14分) 
34.完善下列折半插入排序算法. 
Voidbinasort(structnoder[MAXSIZE],int n) 
  {for(i=2;i<=n;i++){ 
    r[0]=r[i];low=1;high=i-1; 
    while(low<=high){ 
      mid=(1)_________; 
      if(r[0].key         high=(2)_________; 
      elselow=(3)_________; 
    } 
    for(j=i-1;j>=low;j--) 
    (4)_________; 
    r[low]=r[0]; 
  } 
} 
35.下列算法的功能是求出指定结点在给定的二叉排序树中所在的层次.请完善该算法. 
Voidlevel(BSTreeroot,p)  
  {intlevel=0; 
    if(!root) 
      (1)_________; 
    else{ 
      level++; 
      while(root—>key!=p—>key){ 
        if(root—>key key) 
          (2)_________; 
        else 
          (3)_________; 
        level++; 
      } 
      (4)_________; 
    } 
  } 
 
声明:
(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以权威部门公布的正式信息为准。
(二)本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。