一、单项选择题(共40分,每题2分)
1. 树形结构是数据元素之间存在一种( D )。
A.一对一关系                B.多对多关系 
C.多对一关系                D.一对多关系
2. 设语句x++的时间是单位时间,则以下语句的时间复杂度为( B )。
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
x++;
A.O(1)            B.O()            C.O(n)            D.O()
3. 线性表是(A)。
A.一个有限序列,可以为空        B.一个有限序列,不可以为空
C.一个无限序列,可以为空        D.一个无限序列,不可以为空
4. 在顺序表中,只要知道(D),就可在相同时间内求出任一结点的存储地址。
A.基地址                    B.结点大小   
C.向量大小                D.基地址和结点大小
5. 设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列(C)。
AA, B, C, D, E          BB, C, D, E, A
CE, A, B, C, D          DE, D, C, B, A
6. 一个子串在包含它的主串中的位置是指( D )。
A.子串的最后那个字符在主串中的位置
B.子串的最后那个字符在主串中首次出现的位置
C.子串的第一个字符在主串中的位置
D.子串的第一个字符在主串中首次出现的位置
7. 已知二维数组A10×10中,元素a20的地址为560,每个元素占4个字节,则元素a10的地址为( A )。
A.520            B.522            C.524            D.518
8. 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( B )个。
A. 15            B. 16            C. 17            D. 47
9. 在一棵二叉树上第4层的结点数最多为( D )。
A. 2            B. 4            C. 6            D. 8
10. 已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。
A. 1            B. 2            C. 3            D. 4
11. 下面叙述正确的是()。
A. 二叉树是特殊的树
B. 二叉树等价于度为2的树
C. 完全二叉树必为满二叉树
D. 二叉树的左右子树有次序之分
12. 在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为( A )
A. s            B. s-1            C. s+1            D. n
13. 在一个具有n个顶点的无向完全图中,所含的边数为( C )
A. n            B. n(n-1)        C. n(n-1)/2        D. n(n+1)/2
14. 在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为(  B  )
A. k              B. k+1          C. k+2          D. 2k
15. 对于长度为18的顺序存储的有序表,若采用折半查,则查第15个元素的比较次数为( B )
A. 3              B. 4            C. 5              D. 6
16. 若根据查表(23,44,36,48,52,73,64,58)建立哈希表,采用h(K)=K%13计算哈希地址,则元素64的哈希地址为( C )
A.           B. 8              C. 12            D. 13
17. 假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为(  B  )。
    A. 2            B. 3            C. 4            D. 5
18. 假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为(  B  )。
    A. 1, 3, 5, 7, 9, 12                   B. 1, 3, 5, 9, 7, 12
    C. 1, 5, 3, 7, 9, 12                  D. 1, 5, 3, 9, 12, 7
19. 设有广义表D=(a,b,D),其长度为( B ),深度为( A )。
A.无穷大          B.3                C.2              D.5
20. 假定在数组A中,每个元素的长度为3个字节,行下标i18,列下
j110,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数为( C )。
A.80                B.100            C.240            D.270
二、填空题(共10分, 每题1分)
1. 线性结构中元素之间存在_____一对一_____关系;树型结构中元素之间存在_____一对多____关系;图型结构中元素之间存在_______多对多______关系。
2. 一个算法的效率可分为_______时间______效率和_____空间_ ____效率。
3. 顺序表中逻辑上相邻的元素的物理位置__也相邻_____
4. 由三个结点构成的二叉树,共有__5__种不同的形态
5. 设有一空栈,现有输入序列12345,经过push, push, pop, push, pop, push, push后,输出序列是___23541______
6. 一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为__5___,深度为___3__
7. 对于一棵具有n个结点的二叉树,若一个结点的编号为i(1in),则它的左孩子结点的编号为____2i____,右孩子结点的编号为____2i+1____,双亲结点的编号为  i/2(或字符串长度为0和50之间 i/2  
8. 表示图的两种存储结构为_____邻接矩阵________邻接表_______
9. 图中的一条路径长度为k,该路径所含的顶点数为__k+1______
10. 对线性表(18,25,63,50,42,32,90)进行哈希存储时,若选用H(K)=K % 9作为哈希函数,则哈希地址为0的元素有____3____个,哈希地址为5的元素有_____2___个。
三、简答题(共30分)
1.线性表的定义及其两种存储方式
参考答案:
线性表是n个数据元素的有限序列,其中nn0)为线性表的长度。
    顺序表是指线性表的顺序存储结构,即用一组连续的存储单元依次存放线性表的数据元素。
    链表是线性表的链式存储结构。链表是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放线性表的数据元素。
2.一棵度为2的树与一棵二叉树有什么区别?
参考答案:
度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树的次序不能交换
3. 假定用于通信的电文由8个字符ABCDEFGH组成,各字母在电文中出现的概率为5%、25%、4%、7%、9%、12%、30%、8%,试为这8个字母设计哈夫曼编码。
参考答案:
设计哈夫曼编码
利用得到的哈夫曼树,规定左分支用0表示,右分支用1表示,字母ABCDEFGH的哈夫曼编码如下表示:
A:0011        B:01            C:0010        D:1010
E:000        F:100        G:11            H:1011
4. 对于如下图所示的带权无向图,用图示说明:
1)利用prim算法从顶点a开始构造最小生成树的过程;
2)利用kruskal算法构造最小生成树的过程。
参考答案:
1、利用Prim算法从顶点a开始构造最小生成树的过程如图所示。
2、利用Kruskal算法构造最小生成树的过程如图所示。
四、算法实现题(共20分)(请考生根据自己所学的语言编写,可以用C、C++、JAVA、C#、PHP中任一种语言实现,如果采用伪代码实现功能成绩减半)
1、在整型顺序表的某个位置删除一个值为a的整型元素。
参考答案:
public boolean delete(int i){
        int j;
        if(i<0||i>=length){                    //检查删除位置是否存在
            System.out.println("The position is mistake.");
            return false;
        }
        for(j=i;j<length;j++){
            data[j] = data[j+1];
            length --;
            return true;
        }
    }
2、折半查程序实现
参考答案:
public class HalfSearch{
    public int  Binary_Search(int a[],int k){ 
      int low ,high,mid ,flag=0;
      low=1;high=a.length;             
      while(low<=high)                       
      { 
          mid=(low+high)/2;           
          if(k<a[mid])
high=mid-1; 
          else if(k>a[mid])
              low=mid+1;   
          else{
              flag=mid;
              System.out.println(flag);
              break;
          } 
    }
    return  flag;
}
一、单项选择题(共40分,每题2分)
1. 计算机内部数据处理的基本单位是( B )。
A.数据          B.数据元素        C.数据项        D.数据库
2. 设语句x++的时间是单位时间,则以下语句的时间复杂度为( B )。
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
x++;
A.O(1)            B.O()            C.O(n)            D.O()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。