数据结构习题集锦
9 ∞ 0 7
10 4 7 ∞ 0
• 已知AOE网如图所示,求: • (1)完成此工程需要的时间 • (2)该AOE网的关键路径
V2
a6=4
a1=3
v5
a7=1 a10=3
v1
a3=2
a4=2 a2=6
a5=1
v4 v6
a9=4
v7
v3
a8=3
作业
• 使用克鲁斯卡尔算法构造如图所示的图G的 一棵最小生成树。
1
6
18
23 12
2
5 8
7
7
4
5
25 15
3
10
6
20
4
• 有一图的邻接矩阵如下,试给出用弗洛伊 德算法求各点间最短距离序列A1、A2、A3、 A4.
0 2 0 1 6 A 0 5 4 0 3
• 怎样判定循环队列的空和满?并给出循环 队列中元素个数的计算式(设队列最大长 度为N,队首指针front,队尾指针rear) • 试写一个算法,识别依次读入的一个以@为 结束符的字符序列是否为形如‘序列1&序 列2’模式的字符序列。其中序列1和序列2中 都不含字符‘&’,且序列2是序列1的逆序列, 例如:‘a+b&b+a’是属于该模式的字符序列, 而’1+3&3-1’则不是。
b
d g e
c
f
h
i
• 已知一个森林的先序序列和中序序列如下, 请构造森林。 先序序列:ABCDEFGHIJKLMNO 中序序列:CDEBFHIJGAMLONK
A
B
F
G
C
D
E
H
I
J
K
L
N
M
O
• 有7个带权结点,其权值分别为4,7,8,2, 5,16,30,试以它们为叶子结点构造一棵 哈夫曼树(要求按每个结点的左子树根结 点的权值小于或等于右子树根结点的权值 的次序构造),并计算其带权路径长度WPL.
p=L;
while(p->next!=NULL && p->next->data<e) p=p->next;
//找插入位置
s=(LNode *)malloc(sizeof(LNode)); s->next=p->next; s->data=e; p->next=s; } //OrderInsert O(n)
• 通常元素进栈的操作是() • 通常元素出栈的操作是() • 若用不带头结点的单链表来表示链栈S,则 创建一个空栈所要执行的操作是() • 从循环队列中插入一个元素时,通常的操 作是() • 从循环队列中删除一个元素时,通常的操 作是() • 栈的特点是(),队列的特点是()。
作业
• 有5元素,其入栈次序为:A、B、C、D、E,在 各种可能的出栈次序中,以元素C、D最先出栈 (即C第一个且D第二个出栈)的次序有哪几个?
• 已知图G的邻接表如图所示,其从顶点v1出发的 深度优先搜索序列为(),其从顶点v1出发的广 度优先搜索序列为()。
V1 V2 V3 V4 V5 V6
v2 v3 v6 ∧
v5 v5 ∧
v4 ∧
∧
v4 v6 v3 ∧
∧
• 一个图的()表示法是唯一的,而()表示法是不唯一的。 • 在有n个顶点的有向图中,每个顶点的度最大可达() • 已知一个图的邻接矩阵表示,计算第i个结点的入度的方 法是() • AOV网中,顶点表示(),弧表示()。AOE网中,顶点表 示()弧表示()。 • 设有向图G如图所示。写出所有的拓扑序列() • 从下面的邻接矩阵可以看出,该图共有()个顶点。如果 是有向图,该图共有()条弧;如果是无向图,则共有() 条边。
• 深度为k的完全二叉树至少有()个结点, 至多有()个结点,若按自上而下,从左 到右次序给结点编号(从1开始),则编号 最小的叶子结点的编号是()。 • 线索二叉树是一种()结构 A 逻辑 B逻辑和存储 C物理 D线性
• 如图所示的二叉树,回答以下问题: (1)其中序遍历序列为() (2)其先序遍历序列为() (3)其后序遍历序列为() (4)该二叉树的中序线索二叉树为() (5)该二叉树的后序线索二叉树为() a (6)该二叉树对应的森林是()
4 72
7
8
2
5
16
30
6
11
15
26
26
42
6
11
15
11 15
5
6
2
4
2 4
7
8
5
6
7
8
72
a
c
2 4
b
30
42
d
42
16
16 26
26
11
15
11
15
5
6
7
8
5
6
7
8
2
4
2
e
4
f
72
0
1
权值
42
编码
11011 1110 1111 11010 1100 10 0
30
0
16
0
26
1
11
0 1
0
chap6课堂练习
• 设高度为h的二叉树上只有度为0和度为2的结点, 则此类二叉树中所包含的结点数至少为()。 A 2h B 2h-1 C 2h+1 D h+1 • 如果T2是由有序树T1转换来的二叉树,那么T1中 结点的后序就是T2中结点的()。 A先序 B 中序 C 后序 D层次序 • 某二叉树的先序遍历序列和后序遍历序列正好相 反,则该二叉树一定是() A 空或只有一个结点 B 完全二叉树 C 二叉排序树 D 高度等于其结点数 • 深度为5的二叉树至多有()个结点。 A 16 B 32 C 31 D 10
作业
• 已知一棵树如图所示,将其转换为二叉树。
A B E C F D G
Chap7 课堂练习
• 下列关于AOE网的叙述中,不正确的是: A.关键活动不按期完成就会影响整个工程的完成时间. B.任何一个关键活动提前完成,那么整个工程将会提前完成. C.所有的关键活动提前完成,那么整个工程将会提前完成. D.某些关键活动提前完成,那么整个工程将会提前完成. • 一个有n个顶点的无向图最多有()条边。 A n B n(n-1) C n(n-1)/2 D 2n • 对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向 量的大小为(1),所有邻接表中的结点总数是(2)。 (1)A n B n+1 C n-1 D n+e (2)A e/2 B e C 2e D n+e • 采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。 A先序遍历 B中序遍历 C后序遍历 D按层遍历 • 关键路径是事件结点网络中() A从源点到汇点的最长路径 B从源点到汇点的最短路径 C最长的回路 D最短的回路
…
am-1 am
m-2 m-1
am+1 …
m
an-1
n-2
an
n-1
s
t
初始时在表头和表尾各设一个指针s和t; 互换s、t所指的元素; s++; t--; 重复执行,直至s和t相遇或s>t。
§2.2 线性表的顺序表示和实现----顺序表
void invert ( ElemType *E,int s, int t ) {
//将数组E自下标s至下标t之间的元素逆置
while(s<t) E[s++] E[t--] ; }
void InvertSqList( SqList L ) {
//将顺序表L中的所有元素逆置
invert(L.elem, 0, L.length-1); }
②在有序顺表L中插入新结点,使得L仍然有序
§2.2 线性表的顺序表示和实现----顺序表
①逆置顺序表
逆置前: (a1,a2,...,ai-1,ai,ai+1,...,an-1,an)
逆置后: (an,an-1,...,ai+1,ai,ai-1,...,a2,a1)
§2.2 线性表的顺序表示和实现----顺序表 逆置顺序表演示
a1
0
a2
1
• 栈和队列的共同点是() A都是先进先出 B都是先进后出 C只允许在端点处插入和删 除元素 D没有共同点 • 一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列 是()。 A edcba B decba C dceab D abcde • 判定一个栈ST(最多元素为MaxSize)为空的条件是()。 A ST->top!=0 B ST->top==0 C ST->top!=MaxSize-1 D ST->top==MaxSize-1 • 若用一个大小为6的一维数组来实现循环队列,且当前 rear和front的值分别为0和3。当从队列中删除一个元素, 再加入两个元素后,rear和front的值分别是()。 A 1和5 B 2和4 C 4和2 D 5和1 • 在一个链队中,假设f和r分别为队头和队尾指针,则插入s 所指结点的运算时()。 A f->next=s;f=s; B r->next=s;r=s; C s->next=r;r=s; D s->next=f;f=s
V1
V3
V2
0 1 0 A 1 0 1 0 1 0
V4
• 给出一个以下带权图的邻接矩阵表示: 试完成下列要求: (1)写出在该图上从顶点1出发进行深度优先遍历的顶点序 列,并据此判断该图是否为连通图。 (2)画出该图的带权邻接表。 (3)画出按普里姆算法构造最小生成树(森林)的示意图。