数据结构导论串讲笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构导论串讲笔记

1)已知出栈序列,写出可能的入栈序列并分析操作过程。

2)已知入栈序列,写出可能的出栈序列并分析操作过程。

[2004/1]如下图所示,输入元素为(A,B,C),在栈的输出端得到一个输出序列ABC,求出在栈的输入端所有可能的输入序列。

AB

输输

【分析】A,B,C三个字符排成的序列可以有:ABC、ACB、BAC、BCA、CAB、CBA 六种,按堆栈操作的先进后出(或后进先出)的原则,只有输入序列为BCA时,输出无法得到ABC。因为输入序列为BCA时,要想先输出A,必须BCA均入栈,但这样只能得到序列ACB。其余五种输入序列都可在输出端得到序列ABC。

【解答】ABC、ACB、BAC、CAB、CBA

2.队列的操作

分析顺序队中元素入队出队操作及队列的状态。(考过)

[2003/10]设有一顺序队列sq ,容量为5,初始状态时sq .front=sq .rear=0,画出做完下列操作后队列及其头尾指针的状态变化情况,若不能入队,请简述其理。 (1) d ,e ,b 入队 (2) d ,e 出队 (3) i ,j 入队 (4) b 出队 (5) n ,o ,p 入队

【解答】队列及其头尾指针的状态变化情况如下图所示

Sq.f

Sq.r b e d Sq.f b Sq.f Sq.r j b i

Sq.f Sq.r j i Sq.f Sq.r

(a )初态 (b )d ,e ,b 入队 (c ) d ,e 出队 (d ) i ,j 入队 (e )b 出队

第5步操作无法进行,因队列已满。

3.二叉树的存储结构

1) 给出一棵二叉树,画出二叉链表示意图及顺序存储示意图。([2000/10] [2003/10] [2004/10]考过)

[2003/10]画出下列二叉树的二叉链表表示图。

【解答】二叉树的二叉链表表示

B E D F H G

A C

B B ∧ ∧

A

D

C

G ∧ ∧

F

H ∧ ∧

E ∧ ∧

2)给出二叉树的顺序存储示意图,画出二叉树。([2005/1]考过)

[2005/1]已知某二叉树的顺序存储结构如下所示,试画出该二叉树。

A B C D ∧∧∧∧E∧∧∧∧∧∧∧∧F G

【分析】按照给出的顺序存储结构,先绘制出一棵包括空结点的完全二叉树,然后去掉空结点就是所求的二叉树。

【解答】所求二叉树如下图

A

C

B

D

E

F

G

4.二叉树的遍历

1)给出一棵二叉树,写出对该二叉树进行先根遍历、中根遍历及后根遍历的序列。([2001/10] [2004/1] [2005/10]考过)

[2005/10]对于如下图所示二叉树,分别写出其先根遍历、中根遍历和后根遍历的结点访问序列。

B E

D F

A C B

【分析】根据二叉树三种遍历方法的原理,很容易写出该二叉树的先根遍历、中根遍历和后根遍历的结点访问序

【解答】先根遍历的结点访问序:A,B,D,E,F,C

中根遍历的结点访问序:B,F,E,D,A,C

后根遍历的结点访问序:F,E,D,B,C,A

2)给出一棵二叉树的先根遍历和中根遍历序列,恢复二叉树,写出后根遍历的序列。([2002/10]考过)

[2002/10]现有某二叉树,按先根遍历的序列为ABDEFCGH,按中根遍历的序列为DEFBGHCA,试画出此二叉树。

【分析】由先根遍历和中根遍历恢复二叉树的方法:在先根序列中确定根结点(最前面那个结点一定是根结点),然后根据根结点在中根序列中的位置分出根结点的左、右子树(根结点前面的那些结点为根结点的左子树上的结点,根结点后面的那些结点为根结点的右子树上的结

点)。恢复该二叉树的任何一棵子树的过程仍然遵循这个原则。

【解答】二叉树如下图所示

3)给出一棵二叉树的后根遍历和中根遍历序列,恢复二叉树,写出先根遍历的序列。(未考过,但可能考注意第四章的考核知识点的讲解) 5.树的存储结构

1)给出一棵树,画出该树的双亲表示法、孩子链表表示法、带双亲的孩子链表表示法及孩子兄弟链表表示法的示意图。([2000/4]考过)

B C

D A G H

F

E

2)给出一棵树的某一种存储结构的示意图,画出对应的树。(未考过)

6.树的遍历

给出一棵树,写出对该树进行先根遍历、后根遍历及层次遍历的序列。(未考过)

7.二叉树与树、林的相互转换

1)将一棵二叉树转换为树。(未考过)

2)将一棵树转换为二叉树。(未考过)

3)将林转换为一棵二叉树。(未考过)

4)将二叉树转换为林。(未考过)

8.够造哈夫曼树

给出一组权值,构造一棵哈夫曼树并求带权路径长度。(未考过)

9.图的存储结构

1)给出一个图,画出该图的邻接矩阵或邻接表存储示意图。(考过)

[2005/10]试给出下图的邻接矩阵和邻接表表示。

【分析】邻接矩阵存储方法是用一个二维数组存放顶点之间关系的信息。对于不带权的有向图,如果一个顶点到另一个顶点有边,用1表示;否则,用0表示;对于带权的有图,如果一个顶点到另一个顶点有边,用边的权值表示;否则,用∞表示。 邻接表存储方法的核心思想是对于具有n 个顶点的图建立n 个线性链表。每一个链表最前面都分别设置一个称之为表头结点的结点,n 个结点构成一个数组结构。第i 个链表中的每一个链结点称之为表结点。对带权的图,其邻接表中的每个表结点都要增加一个权值域。 【解答】题中图的邻接矩阵为:

题中图的邻接表为:

V 1 V

3

2

1

4

3210131178642v

v v v v v v v v v ⎥⎥⎥⎥⎥⎥⎦

⎢⎢⎢

⎢⎢

⎢⎣⎡∞∞

∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞V 1 V 2 V 3

V

V V V

V

2 2

3

4 4 62 7 3 12 13 8∧ ∧

∧ ∧

相关文档
最新文档