补更一下。
请使用浏览器快捷键Ctrl+F搜索题目
判断题
1. 所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。
2. 对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。
3. 已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。
4. 在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。
5. 通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序列为:123。
6. 如果无向图G必须进行两次广度优先搜索才能访问其所有顶点,则G中一定有回路。
7. 将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树的先序遍历结果是:4、2、1、3、5、6。
8. 算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
9. 一棵有124个结点的完全二叉树,其叶结点个数是确定的。
10. 用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。
单选题
1. 已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:
2. 三叉树中,度为1的结点有5个,度为2的结点3个,度为3的结点2个,问该树含有几个叶结点?
3. 下列函数中,哪个函数具有最快的增长速度?
A.N2logN | B.N(logN)4 | C.N 3 | D.NlogN2 |
---|
4. 先序遍历图示二叉树的结果为

A.A,B,C,D,H,E,I,F,G | B.A,B,D,H,I,E,C,F,G | C.H,D,I,B,E,A,F,C,G | D.H,I,D,B,E,F,G,A,C |
---|
5. 设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?
6. 设 n 是描述问题规模的非负整数,下列程序段的时间复杂度是:
x = 0;
while ( n >= (x+1)*(x+1) )
x = x+1;
A.O(logn) | B. O(n1/2) | C.O(n) | D.O(n2) |
---|
7. 在一个不带头结点的非空链式队列中,假设f和r分别为队头和队尾指针,则插入s所指的结点运算是( )。
A.f->next=s; f=s; | B.r->next=s; r=s; | C.s->next=s; r=s; | D.s->next=f; f=s; |
---|
8. 带头结点的单链表h为空的判定条件是:
A.h == NULL; | B.h->next == NULL; | C.h->next == h; | D.h != NULL; |
---|
9. 在并查集问题中,已知集合元素0~8所以对应的父结点编号值分别是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:−n表示树根且对应集合大小为n),那么将元素6和8所在的集合合并(要求必须将小集合并到大集合)后,该集合对应的树根和父结点编号值分别是多少?
10. 若某图的深度优先搜索序列是{V2, V0, V4, V3, V1},则下列哪个图不可能对应该序列?
11. 对最小堆(小顶堆){1,3,2,12,6,4,8,15,14,9,7,5,11,13,10} 进行三次删除最小元的操作后,结果序列为:
|
---|
A.4,5,6,7,8,9,10,11,12,13,14,15 |
B.4,6,5,13,7,10,8,15,14,12,9,11 |
C.4,6,5,12,7,10,8,15,14,9,13,11 |
D.4,5,6,12,7,10,8,15,14,13,9,11 |
12. 表达式a*(b+c)-d的后缀表达式是:
A.a b c + * d - | B.a b c d * + - | C.a b c * + d - | D.- + * a b c d |
---|
程序填空题
1. 下列代码的功能是返回带头结点的单链表L的逆转链表。
答案
Old_head->Next = New_head
L->Next = New_head
完整代码
List Reverse( List L )
{
Position Old_head, New_head, Temp;
New_head = NULL;
Old_head = L->Next;
while ( Old_head ) {
Temp = Old_head->Next;
Old_head->Next = New_head;
New_head = Old_head;
Old_head = Temp;
}
L->Next = New_head;
return L;
}
2. 下列代码的功能是将大顶堆H中指定位置P上的元素的整数键值上调D个单位,然后继续将H调整为大顶堆。
答案
P
H->Elements[i] = H->Elements[i/2]
完整代码
void IncreaseKey( int P, int D, PriorityQueue H )
{
int i, key;
key = H->Elements[P] + D;
for ( i = P; H->Elements[i/2] < key; i/=2 )
H->Elements[i] = H->Elements[i/2]
H->Elements[i] = key;
}