中国大学MOOC-陈越、何钦铭-数据结构-2019春期中考试

做了《数据结构》MOOC的期中考试,感觉还是有很多知识需要学习,现将考试题目整理如下:

判断题:

1-1用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。 (3分)

1-2所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。 (2分)

1-3如果无向图G必须进行两次广度优先搜索才能访问其所有顶点,则G中一定有回路。 (3分)

1-4算法可以没有输入,但是必须有输出。 (2分)

1-5将一棵完全二叉树存于数组中(根结点的下标为1)。则下标为23和24的两个结点是兄弟。 (3分)

1-6已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。 (3分)

1-7在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。 (3分)

1-8若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (3分)

1-9若一棵平衡二叉树的所有非叶结点的平衡因子都是0,则其必为完美二叉树。(3分)

1-10在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 (3分)


参考答案:TFFTF TFTTF

自己错了第6题,看成CBA了

选择题:

2-1假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为: (4分)

A:3
B:4
C:2
D:5

2-2设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数? (4分)

A:4
B:2
C:5
D:0

2-3设 n 是描述问题规模的非负整数,下列程序段的时间复杂度是:(4分)

x = 0;
while ( n >= (x+1)*(x+1) )
    x = x+1;

A:O(n2​​)
B:O(n1/2)
C:O(n)
D:O(logn)

2-4循环顺序队列中是否可以插入下一个元素()。 (4分)

A:只与队尾指针的值有关,与队头指针的值无关
B:与曾经进行过多少次插入操作有关
C:只与数组大小有关,与队首指针和队尾指针的值无关
D:与队头指针和队尾指针的值有关

2-5若某图的深度优先搜索序列是{V1, V4, V0, V3, V2},则下列哪个图不可能对应该序列? (4分)

在这里插入图片描述

2-6已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是: (4分)

A:111
B:52
C:39
D:119

2-7下列哪个函数是O(N)的? (4分)

A:(logN)2​​
B:(NlogN)/1000
C:N2​​/1000
D:N(logN)2​​

2-8一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为()个。 (4分)

A:17
B:47
C:15
D:16

2-9已知表头元素为c的单链表在内存中的存储状态如下表所示:
在这里插入图片描述
现将f存放于1014H处,并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次
是:(4分)

A:1010H, 1014H, 1004H
B:1010H, 1004H, 1014H
C:1014H, 1010H, 1004H
D:1014H, 1004H, 1010H

2-10将{5, 2, 7, 3, 4, 1, 6}依次插入初始为空的二叉搜索树。则该树的后序遍历结果是:(4分)

A:1, 4, 3, 2, 6, 7, 5
B:1, 4, 2, 6, 3, 7, 5
C:1, 2, 3, 4, 6, 7, 5
D:5, 4, 3, 7, 6, 2, 1

2-11在将数据序列( 6, 1, 5, 9, 8, 4, 7 )建成大根堆时,正确的序列变化过程是:(4分)

A:6,9,5,1,8,4,7 → 6,9,7,1,8,4,5 → 9,6,7,1,8,4,5 → 9,8,7,1,6,4,5
B:6,9,5,1,8,4,7 → 9,6,5,1,8,4,7 → 9,6,7,1,8,4,5 → 9,8,7,1,6,4,5
C:6,1,7,9,8,4,5 → 7,1,6,9,8,4,5 → 7,9,6,1,8,4,5 → 9,7,6,1,8,4,5 → 9,8,6,1,7,4,5
D:6,1,7,9,8,4,5 → 6,9,7,1,8,4,5 → 9,6,7,1,8,4,5 → 9,8,7,1,6,4,5

2-12在并查集问题中,已知集合元素0~8所以对应的父结点编号值分别是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:−n表示树根且对应集合大小为n),那么将元素6和8所在的集合合并(要求必须将小集合并到大集合)后,该集合对应的树根和父结点编号值分别是多少? (4分)

A:4和-5
B:8和-5
C:1和-6
D:8和-6


参考答案:BBBDC AADDA DA

自己错了第3、6题,第三题注意是开根的时间复杂度,第六题注意要审题,叶子节点是8个,还有可能有非叶子节点,另外对11题的为什么选择D还不是特别清楚

程序题:

1、下列代码的功能是从一个大顶堆H的某个指定位置p开始执行下滤。

void PercolateDown( int p, PriorityQueue H )
{
    
    
   int  child;
   ElementType  Tmp = H->Elements[p];
   for ( ; p * 2 <= H->Size; p = child ) 
   {
    
    
      child = p * 2;
      if ( child!=H->Size && _____________________(6) )
      	child++;
      if ( H->Elements[child] > Tmp )         
		_____________________(6);
      else  break;
   }
   H->Elements[p] = Tmp; 
}

参考答案:

H->Elements[child+1]>H->Elements[child]
H->Elements[p]=H->Elements[child]

不知道为什么提交后三个测试点一个显示部分正确,一个显示正确,一个显示编译错误?

5-2
下列代码的功能是返回带头结点的单链表L的逆转链表。

List Reverse( List L )
{
    
    
    Position Old_head, New_head, Temp;
    New_head = NULL;
    Old_head = L->Next;
    while ( Old_head )  {
    
    
        Temp = Old_head->Next;
        _____________________(6);  
        New_head = Old_head;  
        Old_head = Temp; 
    }   
	_________________(6);
    return L;
}

参考答案:

Old_head->Next=New_head
L->Next=New_head

猜你喜欢

转载自blog.csdn.net/qq_35779286/article/details/89413869