}
模拟试卷二
一、 单选题(每题 2 分,共20分)
1. 在一个带有附加表头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=p; p->next=HL; B. p->next=HL->next; HL->next=p; C. p->next=HL; p=HL; D. p->next=HL; HL=p;
2. 若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储( )个元素. A. n B.n-1 C. n+1 D.不确定
3. 下述哪一条是顺序存储方式的优点?( )
A.存储密度大 B.插入和删除运算方便 C. 获取符合某种条件的元素方便 D.查找运算速度快
4. 设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?(脚注(10)表示用10进制表示,m>3)
A.658 B.648 C.633 D.653
5. 下列关于二叉树遍历的叙述中,正确的是( ) 。
A. 若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点
B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点
C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点
D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点
6. k层二叉树的结点总数最多为( ).
kk-1
A.2-1 B.2K+1 C.2K-1 D. 2
7. 对线性表进行二分法查找,其前提条件是( ). A.线性表以链接方式存储,并且按关键码值排好序
B.线性表以顺序方式存储,并且按关键码值的检索频率排好序 C. 线性表以顺序方式存储,并且按关键码值排好序 D. 线性表以链接方式存储,并且按关键码值的检索频率排好序 8. 对n个记录进行堆排序,所需要的辅助存储空间为
A. O(1og2n) B. O(n) C. O(1) D. O(n2)
9. 对于线性表(7,34,77,25,64,49,20,14)进行散列存储时,若选用H(K)=K %7作为散列函数,则散列地址为0的元素有( )个,
A.1 B.2 C.3 D.4
10.下列关于数据结构的叙述中,正确的是( ). A. 数组是不同类型值的集合
B. 递归算法的程序结构比迭代算法的程序结构更为精炼 C. 树是一种线性结构
D. 用一维数组存储一棵完全二叉树是有效的存储方法
5
二、 填空题(每空1分,共26分)
1. 数据的逻辑结构被分为_________、________、__________和___________四种。 2. 一个算法的时间复杂度为(3n3+2000nlog2n+90)/n2,其数量级表示为________。
3. 对于一个长度为n的单链存储的队列,在表头插入元素的时间复杂度为_________,在
表尾插入元素的时间复杂度为____________。 4. 假定一棵树的广义表表示为A(D(E,G),H(I,J)),则树中所含的结点数为__________
个,树的深度为___________,树的度为_________。
5. 后缀算式79 2 30 + - 4 2 / *的值为__________。中缀算式(3+X*Y)-2Y/3对
应的后缀算式为_______________________________。
6. 在一棵高度为5的理想平衡树中,最少含有_______个结点,最多含有_______个结点。 7. 在树中,一个结点的直接后继结点称为该结点的________。一个结点的直接前趋结点称
为该结点的________。
8. 在一个具有10个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的
有向完全图中,包含有________条边。 9. 假定一个线性表为(12,17,74,5,63,49,82,36),若按Key % 4条件进行划分,使得同一余数
的元素成为一个子表,则得到的四个子表分别为____________________________、___________________、_______________________和__________________________。 10. 对一棵B_树进行删除元素的过程中,若最终引起树根结点的合并时,会使新树的高度
比原树的高度___________。 11. 在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序
过程的时间复杂度为________。
12. 在线性表的散列存储中,装填因子?又称为装填系数,若用m表示散列表的长度,n表
示待散列存储的元素的个数,则?等于________。 三、 运算题(每题 6 分,共24分) 1. 在如下数组A中链接存储了一个线性表,表头指针存放在A [ 0].next,试写出该线性表。 A 0 1 2 3 4 5 6 7
data 60 50 78 90 34 40 next 4 0 5 2 7 1 3 2. 已知一棵二叉树的前序遍历的结果是ABKCDFGHIJ, 中序遍历的结果是KBCDAFHIGJ, 试画出这棵二叉树。
3. 已知一个图的顶点集V为: V={1,2,3,4,5,6,7}; 其共有10条边。该图用如下边集数组存储:
起点 1 2 2 5 5 2 2 6 1 3 终点 6 4 5 4 7 6 7 7 7 5 权 1 1 2 2 2 3 3 4 5 7 试用克鲁斯卡尔算法依次求出该图的最小生成树中所得到的各条边及权值。
4. 画出向小根堆中加入数据4, 2, 5, 8, 3, 6, 10, 1时,每加入一个数据后堆的变化。 四、 阅读算法(每题7分,共14分)
1. 在下面的每个程序段中,假定线性表La的类型为List,元素类型ElemType为int,并假定每个程序段是连续执行的。试写出每个程序段执行后所得到的线性表La。 (1)InitList(La);
Int a[]={100,26,57,34,79};
For (i=0;i<5;i++) Insert(La,a[i]);
TraverseList(La);
6
(2)DeleteFront(La);
InsertRear(La, DeleteFront(La));
TraverseList(La); (3)ClearList(La); For (i=0;i<5;i++) InsertFront(La,a[i]); TraverseList(La);
2. 现面算法的功能是什么? void ABC(BTNode * BT) {
if BT {
cout<
} 五、 算法填空(共8分) 二分查找的递归算法。
Int Binsch(ElemType A[],int low,int high,KeyType K) {
if ___________________{ int mid=(low+high)/2;
相关推荐: