《算法与数据结构》模拟试题3
一、填空题(每小题2分,共18分)
1 数据的逻辑结构包括                                  三种结构。
2 算法分析的两个主要方面是                           
3 在双向链表中,每个结点有两个指针域,一个指向           
另一个指向             
4 空串是                  ,其长度等于           
5 有一个10阶对称矩阵A,采用压缩存储方式,以行为主存储下三角形到一个一维数组中,若A[0][0]的地址是200(每个元素占2个基本存储单元),则A[9][5]的地址是               
6 在非空二叉树的中序遍历序列中,根结点的右边                             
7 采用邻接链表存储图,则图的深度优先搜索算法类似于二叉树的                 
8 在分块查方法中,首先查            ,然后再查相应的               
9 对于文件,按其记录的类型可将文件分为              文件、              文件。
二、单项选择题(请将答案写在题目后的括号中。每题2分,共数据结构与算法分析答案18分)
1、有如下递归函数fact(n),其时间复杂度是(        )。
Fact(int n)
{  if (n<=1)  return 1; 
  else  return(n*fact(n-1)) ;
}
A  O(n)      B O(n2)      C O(2n)    D O(n2n)
2 设有一个栈顶指针为top的顺序栈Stop0时表示栈空,则向S中压入一个元素P执行的操作是(        )。
A  S[top++]=p      B  S[++top]=p
(C)  S[--top]=p        D  S[top--]=p
3 稀疏矩阵一般的压缩存储方法有主要有(        )两种。
A  二维数组和三维数组    B  三元组和散列
C  三元组和十字链表      D  散列和十字链表
4 一般树的存储结构主要有(          )。
A  双亲表示法,孩子表示法,链表表示法
B  双亲表示法,孩子表示法,孩子兄弟表示法
C  双亲表示法,孩子兄弟表示法,链表表示法
D  双亲表示法,孩子兄弟表示法,链表表示法
5 一棵有n(n0)个结点的满二叉树的叶子结点的数目是            ,非叶子结点的数目是            。(       
A  2[2n]    2[2n]            B  2[2n]-1    2[2n]   
C  2[2n]-1    2[2n]-1        D  2[2n]    2[2n]-1
6 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的            倍,
所有顶点的度之和等于所有顶点的入度之和的            倍。(       
A 1/21    B  1C 2D  14
7、设有一个长度为12的有序表,采用二分查方法对该表进行查时,在表内各元素等概率情况下查成功所需的平均比较次数为。(   
(A)  35/12        B  37/12    C 39/12      D  43/12
8 设有一组记录的关键字是(3728568060142550),用快速排序法以第一个记录为基准得到的一次划分结果是(        )。
A 2528371456806050    B 2528371460805650
  C 2528143760805650    D 2528143760568050
9 文件在外存上的上的组织方式称为文件的物理结构。基本的物理结构有:(     
(A)  顺序结构,链接结构,线性结构    (B) 线性结构,链接结构,索引结构
(C) 顺序结构,链接结构,线性结构      (D)  顺序结构,链接结构,索引结构
三、分析题(每题6分,共30分)
1 设有一棵二叉树,其先序遍历序列是abdgehicf,中序遍历序列是gdbheiafc,请画出这棵二叉树,然后画出其后序线索化树。
2 对于下图中的网,写出该网的邻接链表;然后写出其广度优先搜索生成树(假设从顶点V1出发);最后给出按Prime算法从顶点V5出发得到的最小生成树。
3 将关键字序列(14918741325196)依此插入到初态为空的二叉排序树中,请画出所得到的树T;然后画出删除18之后的二叉排序树T1;最后再画出插入18之后的二叉排序树T2
4 线性表的关键字集合{712582942699533175647},共有11个元素,已知散列函数为:Hk = k MOD 11,采用链地址处理冲突,请给出对应的散列表结构,并计算该表成功查的平均查长度。
5 已知序列{3529526017938271345},请给出采用归并排序法对该序列做非递减排序时的每一趟结果。
四、算法填空(每空2分,共20分)
请在下面各个算法的空白处填上相应的语句,以实现算法功能。每个空白处只能填一个语句。
1、 循环队列Q的队首元素出队操作算法。
#define  Max_Queue_Size  100
ElemType  Delete_CirQueue(SqQueue  Q)
    {  ElemType  x ;
      if  (                    ) 
            printf(“The Circular Queue is Null!”) ;
else  {  x=Q.Queue_array[Q.front] ;
                                          ;
      }
    }
2 二叉树中序遍历的非递归算法。
#define  Max_Node_Num  50
Void  InorderTraverse( BTNode  *T)
{  BTNode  *Stack[Max_Node_Num] ,*p=T ;
      int  top=0 , bool=1 ;
      if  (T==NULL)  printf(“The Binary Tree is Empty!\n”) ;
      else  { do  {  while (p!=NULL)
                      {  stack[++top]=p ; p=p->Lchild ;  }
                    if  (top==0)  bool=0 ;
                    else  {                            ;
                            visit( p->data ) ;                          ; }
                }  while (                    ) ;
          }
}
3 折半查算法。
int  Bin_Search(SSTable  ST , KeyType  key)
{  int  Low=1High=ST.length, Mid ;

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