824数据结构与算法设计A

合集下载

西安科技大学824数据结构与算法设计A2011年考研专业课真题试卷

西安科技大学824数据结构与算法设计A2011年考研专业课真题试卷
西安科技大学 2011 年硕士研究生入学考试试题
─────────────────────────────────
科目编号:824
科目名称: 数据结构与算法设计(A)
考生须知: 1、 答案必须写在答题纸上,写在试题或草稿纸上不给分。 2、 答题须用蓝、黑色钢笔或圆珠笔,用铅笔、红色笔者不给分。 3、 答题必须写清题号,字迹要清楚,卷面要保持整洁。
(A) {1,2,3,4,5}
(B) {2,1,3,4,5}
(C) {9,6,8,4,5,2} (D) {4,6,5,8,9,7} 10.深度为 5 的二叉树至多有( )个叶子结点。
(A) 16
(B) 15
(C) 31
(D) 32
共4 页
第 1页
二、填空题(每题 2 分,共 30 分)
1.在循环单链表中 L 中,若 p 所指结点为链表的最后一个结点,在 p 之后插
(9)
;
1.编写函数 Inssort(a,n),完成对数组 a[n]的直接插入排序。 2. 写出用尾插法建立单链表的程序,要求先定义数据结构。
3. 以下程序的功能是利用堆进行排序。请在空白处填上适当语句,使其完整。
void sift(RecType r[],int k,int m)
{
int i,j,x;
/*r[j]是 r[i]的左孩子*/
(A)P= =L
(B)P= =Null
(C)P->next= =L (D)P->prior= =L
4.在栈顶一端可以进行的全部操作是( )。
(A)插入
(B)删除
(C)插入和删除 (D)进栈
5.数组是一个( )线性表结构。
(A)不加限制 (B)推广了的 (C)加了限制的 (D)非

天津理工大学824数据结构与C++程序设计(听障)2021年考研专业课初试大纲

天津理工大学824数据结构与C++程序设计(听障)2021年考研专业课初试大纲
附件 3:
天津理工大学 2021 年硕士研究生入学初试考试大纲
学院(盖章):聋人工学院 考试科目名称: 数据结构与 C++程序设计(听障) 一、考试方式 考试采用笔试形式,考试时间为 180 分钟,试卷满分为 150 分。
二、试卷结构与分数比重 题型包括填空题(20%)、选择题(20%)、算法或数据结构的设计与分析题(30%)、程序分析题(15%) 与编程题(15%)等。
三、考查的知识范围 《数据结构与 C++程序设计》入学考试包括两部分内容:其中数据结构考试主要涉及线性结构、树、图、查找 表和排序,占 75 分;C++程序设计考试主要涉及支持面向对象程序设计的内容,同时兼顾 C++支持结构化程 序设计的特征,占 75 分。本试卷总共 150 分,具体考试内容主要包括: 数据结构部分 一、数据结构基础(5%) 1. 数据结构相关基本概念 2. 逻辑结构和物理结构 3. 算法效率的度量(O-表示法) 二、线性表、栈和队列(20%)(以下各点要求掌握算法的程序实现) 1. 顺序表的表示和基本操作的实现算法 2. 单链表、循环链表、双向链表的表示和和基本操作的实现算法 3. 栈的表示和和基本操作的实现算法 4. 循环队列、链队列的表示和和基本操作的实现算法 三、数组、递归(5%) 1. 数组的存储方式 2. 特殊矩阵的压缩存储 3. 递归思想的特点 4. 递归算法和递归函数 四、树和二叉树(20%) 1. 树的定义和基本术语 2. 二叉树的定义、性质,二叉链表存储结构 3. 完全二叉树的性质 4. 二叉树的深度优先(先序、中序、后序)和广度优先(层序)遍历算法和程序实现 5. 树的存储结构 6. 树、森林与二叉树的转换 7. 霍夫曼树的定义、性质、构造方法 五、图(15%) 1. 图的定义和术语 2. 图的邻接矩阵、邻接表存储结构 3. 图的深度优先搜索、广度优先搜索及其算法实现 4. 生成树的定义,图的最小生成树定义与构造方法(不要求算法实现) 5. 拓扑排序

844c语言程序设计与数据结构

844c语言程序设计与数据结构

844c语言程序设计与数据结构一、引言在计算机科学和软件工程中,程序设计与数据结构是两个基础性的概念。

程序设计是指根据问题需求,设计出解决问题的计算机程序的过程。

而数据结构则是指组织和管理数据的方式和方法。

在844c 语言中,程序设计与数据结构密切相关,本文将介绍844c语言程序设计与数据结构的相关知识。

二、844c语言简介844c语言是一种面向过程的编程语言,它是在C语言的基础上发展而来。

844c语言具有较高的可读性和可移植性,适用于各种计算机平台。

844c语言支持模块化编程,可以通过定义和调用函数来实现代码的重用,提高开发效率。

同时,844c语言也提供了丰富的数据结构,如数组、链表、栈、队列等,以及相应的操作函数,方便程序员进行数据的处理和管理。

三、数据结构的概念与分类数据结构是指数据元素之间的关系和组织方式。

在844c语言中,常用的数据结构包括线性结构、树形结构和图形结构。

线性结构是指数据元素之间有一对一的关系,如数组和链表;树形结构是指数据元素之间有一对多的关系,如树和二叉树;图形结构是指数据元素之间有多对多的关系,如图。

不同的数据结构适用于不同的问题场景,选择合适的数据结构可以提高程序的效率和性能。

四、常见数据结构的实现与应用1. 数组数组是一种线性结构,它由一组相同类型的元素组成,可以通过下标访问和修改元素。

844c语言提供了丰富的数组操作函数,如创建数组、初始化数组、插入元素、删除元素等。

数组适用于元素个数固定的情况,如存储学生的成绩、存储图像的像素等。

2. 链表链表也是一种线性结构,它由一组节点组成,每个节点包含数据和指向下一个节点的指针。

844c语言提供了链表的创建、插入、删除等操作函数。

链表适用于元素个数不固定、需要频繁插入和删除操作的情况,如实现队列、栈等数据结构。

3. 栈栈是一种具有后进先出(LIFO)特性的线性结构,它只允许在栈顶进行操作。

844c语言提供了栈的创建、入栈、出栈等操作函数。

842-数据结构与程序设计

842-数据结构与程序设计

842-数据结构与程序设计《842 数据结构与程序设计》在当今数字化的时代,计算机技术的应用无处不在,而数据结构与程序设计则是计算机科学中的核心基石。

842 这门课程,就像是一把钥匙,为我们打开了深入理解计算机世界的大门。

数据结构,简单来说,就是数据的组织和存储方式。

它就像是一个仓库,我们需要合理地规划这个仓库的布局,以便能够高效地存放和取出货物。

想象一下,如果仓库里的货物杂乱无章地堆放,那么当我们需要找到特定的货物时,就会变得非常困难,浪费大量的时间和精力。

在计算机中也是如此,如果数据没有以合适的结构进行组织,那么程序的运行效率就会大打折扣。

常见的数据结构有数组、链表、栈、队列、树和图等。

数组是一种最简单的数据结构,它就像是一排连续的格子,每个格子都可以存放数据。

数组的优点是访问速度快,通过索引可以直接找到对应的元素。

但它的缺点也很明显,就是插入和删除元素比较麻烦,因为需要移动大量的数据。

链表则不同,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

链表的插入和删除操作非常方便,但访问某个特定的元素就需要从头开始遍历,效率相对较低。

栈和队列则是两种特殊的线性结构。

栈就像是一个只有一个出入口的桶,先放进去的东西最后才能取出来,遵循“后进先出”的原则。

队列则像排队买票的队伍,先到的先服务,遵循“先进先出”的原则。

这两种数据结构在很多程序中都有广泛的应用,比如函数调用的栈帧、操作系统中的进程调度等。

树是一种分层的数据结构,比如二叉树、二叉搜索树等。

二叉树就像是一棵倒立的树,每个节点最多有两个子节点。

二叉搜索树则是一种特殊的二叉树,它的左子树中的节点值都小于根节点的值,右子树中的节点值都大于根节点的值。

这种特性使得在二叉搜索树中查找、插入和删除元素的效率都比较高。

图是一种更加复杂的数据结构,它由顶点和边组成。

图可以用来表示各种复杂的关系,比如社交网络中的人际关系、交通网络中的道路连接等。

而程序设计,则是利用这些数据结构来解决实际问题的过程。

842数据结构与程序设计

842数据结构与程序设计

842-《数据结构与程序设计》考试大纲一、试卷满分及考试时光试卷满分为150分,考试时光为180分钟。

二、试卷的题型结构填空题挑选题判断题简答题分析题设计题三、考试内容第一章绪论一、什么是数据结构二、基本概念和术语三、抽象数据类型的表示与实现四、算法和算法分析第二章线性表一、线性表的类型定义二、线性表的顺序表示和实现三、线性表的链式表示和实现四、一元多项式的表示及相加第三章栈和队列一、栈二、抽象数据类型栈的定义三、栈的表示和实现四、栈的应用举例五、栈与递归的实现第 1 页/共 4 页六、队列七、离散事件模拟第四章串一、串类型的定义二、串的表示和实现三、串的模式匹配算法四、串操作应用举例第五章数组和广义表一、数组的定义二、数组的顺序表示和实现三、矩阵的压缩存储四、广义表的定义五、广义表的存储结构六、m元多项式的表示七、广义表的递归算法第六章树和二叉树一、树的定义和基本术语二、二叉树三、遍历二叉树和线索二叉树四、树和森林五、树与等价问题六、赫夫曼树及其应用七、回溯法与树的遍历八、树的计数第七章图一、图的定义和术语二、图的存储结构三、图的遍历四、图的连通性问题五、有向无环图及其应用六、最短路径第八章动态存储管理一、可利用空间表及分配主意二、边界标识法三、伙伴系统四、无用单元收集五、存储紧缩第九章寻找一、静态寻找表二、动态寻找表三、哈希表第十章内部排序一、插入排序二、迅速排序三、挑选排序四、归并排序五、基数排序第十一章外部排序一、外存信息的存取二、外部排序的主意三、多路平衡归并的实现四、置换挑选排序五、最佳归并树第十二章文件一、有关文件的基本概念二、顺序文件三、索引文件第 3 页/共 4 页四、isam文件和vsam文件五、直接存取文件(散列文件)六、多关键字文件第十三章数据类型、运算符与表达式一、c的数据类型二、常量与变量三、整型数据四、实型数据五、字符型数据六、变量赋初值七、各类数值型数据间的混合运算八、算术运算符和算术表达式九、赋值运算符和赋值表达式十、逗号运算符和逗号表达式第十四章指针一、地址和指针的概念二、变量的指针和指向变量的指针变量三、数组的指针和指向数组的指针变量四、字符串的指针和指向字符串的指针变量五、函数的指针和指向函数的指针变量六、返回指针值的函数七、指针数组和指向指针的指针。

西安科技大学824数据结构与算法设计B2008年考研真题答案

西安科技大学824数据结构与算法设计B2008年考研真题答案

5.D 10.A
三、解答题(任选 6 题,每题 10 分,共 60 分)
1.【解答】: (1)由于表长 n 已给定,此时证明理想的块长度应为 n ,即
b= n = 100000 =100
(2)由于采用等分区间顺序检索方法进行检索,长度为 n 的表就分成
s= ┏n/b┑=┏10000/10┑=100 块 (3)平均检索长度为:ASL=(b+s)/2+1=(100+100)/2+1=101
西安科技大学 2008 年硕士研究生入学考试参考答案
─────────────────────────────────
科目编号:824
科目名称:数据结构与算法设计(B)
一、选择题(每题 1 分,共 10 分) 1.B 2.A 3.B 4.C 6.C 7.B 8.C 9. D
二、填空题(每空 1 分,共 20 分) 1.存储(或存储结构) 2.p->next->next 3.12 4.进栈和退栈 5.限制在两端进行插入和删除 6.索引表;块 7.哈希表查找方法 8.n(n+1)/2 9.路径长度依次递增的 10.384 11.2 12.插入; 选择 13.开放定址法; 链地址法 14.n(n-1)/2; n(n-1) 15.n-1; O(n2)
当 n=1 时,前、中序序列均只有一个元素且相同,即为根,由此唯一确 定一个二叉树。
假设 n<m-1 时结论成立,则证明 n=m 时成立。 假设前序序列为 a1,a2,…,am,中序序列为 b1,b2,…,bm。 因为前序序列由前序遍历而得,则 a1 即为根结点的元素,又中序序列由 中序遍历而得,则在中序序列中必能找到与 a1 相同的元素,设为 bj,由此 可以得到{b1,…,bj-1}为左子树的中序序列,{bj+1,…,bm}为右子树的中序 序列。 若 j=1,即 b1 为根,此时二叉树的左子树为空,{a2,…,am}为右子树的 前序序列,{b2,…,bm}为右子树的中序序列。右子树的结点数为 m-1。由此, 这两个序列唯一确定了右子树,也唯一确定了二叉树。 若 j=m , 即 bm 为 根 , 此 时 二 叉 树 的 右 子 树 为 空 , 同 上 , 子 序 列 {a2,…,am}{b1,…,bm-1}唯一确定左子树。 若 2<=j<=m-1,则子序列{a2,…,aj}{b1,…,bj-1}唯一确定了左子树, 子序列{aj+1,…,am}{bj+1,…,bm}唯一确定了右子树。 由此证明了唯一的根及其左右子树只能构成一棵确定的二叉树。 同理,中序、后序序列可唯一确定一棵二叉树。 4【解答】(9 分) 一棵二叉树的先序序列、中序序列、后序序列如下,填空使之完整 先序: (A)B(D)F(K)I C E H(J ) G 中序: D(B)K F I A(H)E J(C)( G ) 后序: (D)K(I)F B H J(E)G(C) A 5.【解答】 (1)表长为 14,运用除留余数法作哈希函数,选择一个最接近 14 的一个素 数 13 作为除数,该哈希函数为 H(key)=key MOD 13。 (2)用线性探测再散列法解决冲突,各关键字在表中的位置如下所示:

西安科技大学824数据结构与算法设计B2009年考研真题答案

西安科技大学824数据结构与算法设计B2009年考研真题答案

一、判断题(下列各题,你认为正确的,请在题干的括号内打“√”,错的
打“×”。每题 1 分,共 10 分)
(√)1、在设计递归函数时,如不用递归过程就应借助于数据结构栈。
(√)2、线性表中的每个结点最多只有一个前驱和一个后继。
(×)3、对任意一个图,从它的某个顶点出发进行一次深度优先或广度优先
搜索遍历可访问到该图的每个顶点。
最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中 的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实 现这些操作就是数据的运算问题了。 2. 设二叉树的顺序存储结构如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 EAF∧D∧H∧∧C ∧∧∧G I ∧∧∧∧B (1)根据其存储结构,画出该二叉树。 (2)写出按前序、中序、后序遍历该二叉树所得的结点序列。 (3)将其二叉树转换为森林,并写出按前序遍历森林所得的结点序列。 解答: (1)该存储结构对应的二叉树为:
(1)前序序列和中序序列相同; (2)中序序列和后序序列相同。 答:
(1) 前序序列和中序序列相同的二叉树是:空二叉树或没有左子树的二叉树 (右单支树)。
(2) 中序序列和后序序列相同的二叉树是:空二叉树或没有右子树的二叉树 (左单支树)。
5、简述栈和队列的共同点和不同点。 答:栈和队列都是操作受限的线性表。 所有的插入和删除均在一段进行的线性表称为栈,它有先进后出的特点。 所有插入在一端,删除在另一端进行的线性表称为队列,它有先进先出的特点。 两种存储结构为:顺序存储和链式存储。 五、综合题(从 5 道题中任选 4 题,每题 15 分,共 60 分) 1.试举一个数据结构的例子,叙述其逻辑结构、存储结构、运算三个方面的 内容。 解答: 例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生 的姓名为一行记成的表。这个表就是一个数据结构。每个记录(有姓名,学号,

824-计算机基础考试大纲

824-计算机基础考试大纲

824-计算机基础考试大纲计算机基础包括数据结构、计算机网络两部分内容,每部分内容各占1/2。

I 数据结构课程基本要求:数据结构是在计算机科学中是一门综合性的专业基础课。

课程主要内容包括线性表、栈和队列、串、数组和广义表、树和二叉树、图、内排序、文件管理和外排序等。

考试的具体要求包括:1. 全面系统地掌握队列、堆、栈、树、图等基本数据结构,深刻理解和熟练掌握课程中的典型算法;2. 提高对各种数据结构与算法的程序设计能力,提高对数据结构与算法的实际运用能力。

考试内容:1. 线性表1.1. 线性表的类型定义1.2. 线性表的顺序表示与实现1.3. 线性表的链式表示与实现2. 栈和队列2.1. 栈的定义与实现2.2. 栈与递归的实现2.3. 队列的定义与实现3. 串3.1. 串的定义与实现3.2. 串的模式匹配算法4. 数组和广义表4.1. 数组的定义与实现4.2. 矩阵的压缩存储4.3. 广义表的定义与实现4.4. 广义表的递归算法5. 树和二叉树5.1. 树的定义和基本术语5.2. 二叉树的定义、性质和存储结构5.3. 遍历二叉树和线索二叉树5.4. 树和森林5.5. 赫夫曼树及其应用5.6. 回溯法与树的遍历6. 图6.1. 图的定义和术语6.2. 图的存储结构6.3. 图的遍历6.4. 最短路径7. 动态存储管理7.1. 边界标识法7.2. 伙伴系统7.3. 存储紧缩8. 查找8.1. 静态查找表8.2. 动态查找表8.3. 哈希表9. 内部排序9.1. 内部排序算法,插入排序、快速排序、选择排序、归并排序和基数排序等9.2. 内部排序算法的比较10. 外部排序10.1. 外存信息的存取10.2. 多路平衡归并的实现10.3. 选择排序10.4. 最佳归并树11. 文件11.1. 有关文件的基本概念11.2. 顺序文件与索引文件11.3. 直接存取文件(散列文件)11.4. 多关键字文件参考书目:1.《数据结构(C语言版)》作者:严蔚敏,吴伟民出版社:清华大学出版社ISBN:97873020236852.《数据结构与算法》作者:张铭,王腾蛟,赵海燕出版社:高等教育出版社ISBN:9787040239614II 计算机网络课程基本要求1.掌握计算机网络的基本概念、基本原理和基本方法。

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

共 5页 第1页
西安科技大学
2013年硕士研究生入学考试试题A
─────────────────────────────────
科目编号:824 科目名称: 数据结构与算法设计
考生须知:
1、 答案必须写在答题纸上,写在试题或草稿纸上不给分。
2、 答题须用蓝、黑色钢笔或圆珠笔,用铅笔、红色笔者不给分。
3、 答题必须写清题号,字迹要清楚,卷面要保持整洁。
4、 试题要随答题纸一起交回。

一、单项选择题(每小题2分,共30分)
(1)并归排序的时间复杂度是( )。
A.O(n2) B.O(nlog2n) C.O(n) D.O(log2n)
(2)设一个链表最常用的操作是在末尾插入结点和删除尾结点,选用( )存储结构最节
省时间。
A.单链表 B.单循环链表
C.带尾指针的单循环链表 D.带头结点的双循环链表
(3)散列文件是一种( )。
A.顺序文件 B.索引文件 C.链接文件 D.计算机寻址文件
(4)常用于函数调用的数据结构是( )。
A.栈 B.队列 C.数组 D.链表
(5)两个矩阵snmsBA,相乘的时间复杂度是( )。
A.O(n2) B.O(s2) C.O(msn) D.O(mn)
(6)图的广度优先搜索遍历使用的数据结构是( )。
A.栈 B.队列 C.集合 D.树
(7)在单链表中,每个存贮结点有两个域,即数据域和指针域,指针域指向该结点的( )。
A.直接前驱 B.直接后继 C.开始结点 D.终端结点
(8)在已知头指针的单链表中,要在其尾部插入一个新结点,其时间复杂度是( )。
A.O(n2) B.O(1) C.O(n) D.O(log2n)
(9)在链队列中执行入队操作,( )。
A.需判断队是否为空 B.限定在链表头p进行
C.需判断队是否为满 D.限定在链表尾p进行
(10)对序列(95,83,62,70)进行冒泡排序(由小到大),第2趟排序后的结果为( )。
A.(70,83,62,95) B.(70,62,83,95)
共 5页 第2页

C.(62,70,83,95) D.(83,62,70,95)
(11)下列选项中与数据的存储结构无关的术语是( )。
A.栈 B.链队列 C.顺序表 D.链表
(12)已知循环队列的存贮空间大小为m,对头指针front指向对头元素,对尾指针rear
指向对尾元素的下一个位置,则向对列中插入新元素时,修改指针的操作是( )。
A.rear=(rear-1)%m B.rear=(rear+1)%m
C.front=(front-1)%m D.front=(front+1)%m
(13)对于广义表A,若head(A) =tail(A),则A为( )。
A.(( )) B.( ) C.(( ),( )) D.(( ),( ),( ))
(14)若一棵具有n个结点的二叉树的先序遍历和后序遍历的次序正好相反,则该二叉树
应是( )。
A.结点均无左孩子的二叉树 B.高度为n的二叉树
C.结点均无右孩子的二叉树 D.存在度为2的结点的二叉树
(15)平均时间复杂度为O(nlog2n)的稳定排序算法是( )。
A.快速排序 B.堆排序 C.归并排序 D.冒泡排序

二、填空题(每小题2分,共20分)
(1)数据结构由数据的逻辑结构、存贮结构和数据的 三部分组成。
(2)广义表A=(a, b, (c, d, (e, f )), G)的长度为 。
(3)以数据集{25,4,15,5,1}为权值构造一棵哈夫曼树,其带权路径长度为 。
(4)在高度为h的具有n个结点的二叉排序树中,查找任一结点的最多比较次数
是 。
(5)若某哈夫曼树有m个叶子结点,则该哈夫曼树共有 个结点。
(6)向一个栈顶指针为top的链栈中插入一个新结点*p时,应执行p->next=top和 操
作。
(7)在队列中,允许插入的一端称为 。
(8)在一棵二叉树中,度为1的结点数是3,度为2的结点数是4,则该二叉树有 个
叶子结点。
(9)具有n个顶点的连通无向图,其生成树有 条边。
(10)当关键字序列基本有序时,快速排序、简单选择排序和直接插入排序三种排序算法
中,运行效率最高的是 。
共 5页 第3页

三、简答题(任选5道题,每小题8分,共40分)
(1)什么是线性表?通常有哪些存贮方式?其各自的优缺点是什么?
(2)什么是顺序队列的“假溢出”现象?有哪些处理方式?如何判断队满和队空?
(3)什么是二叉树的顺序存储方式?其优缺点有哪些?
(4)图的存储结构有哪些?其各自的优缺点是什么?
(5)静态查找有哪三种方法?各自的查找效率如何?
(6)什么样的图其最小生成树是唯一的?用Prim和Kruskal算法求最小生成树的时间复
杂度各为多少?他们分别适合于哪种类型的图?
四、应用题(每小题10分,共40分)

(1)已知待排序记录的关键字序列为{25,96,11,63,57,78,44},请回答下列问题:
(a)画出堆排序的初始堆(大根堆);
(b)画出第2次重建堆之后的堆。
(2)已知关键字序列为{56,23,41,79,38,62,18},用散列函数H(key)=key%11将其散列到
散列表HT[0…10]中,采用线性探测法处理冲突,请回答下列问题:
(a)画出散列存储后的散列表;
(b)求在等概率下查找成功的平均查找长度。
(3)已知某二叉排序树(结点值大小按字母顺序)的前序遍历序列为EBACDFHG,请
回答下列问题:
(a)画出此二叉排序树;
(b)若将此二叉排序树看作森林的二叉链表存储,画出对应的森林。
(4)下图所示是一带权有向图的邻接表法存储表示。其中出边表中的每个结点均含有三
个字段,依次为边的另一个顶点在顶点表中的序号、边上的权值和指向下一个边结点的指
针。请回答下列问题:
(a)画出该带权有向图的图形;
(b)从顶点V1为起点的广度优先遍历的顶点序列及对应的生成树;
(c)以顶点V1为起点的深度优先遍历的顶点序列及对应的生成树;
(d)由顶点V1到顶点V3的最短路径。

V1
V2
V3
V4V5V6233429625336230338542110618123

4
5
6

(顶点边)(出边表)
共 5页 第4页

五、算法设计题(任选2题,每小题10分,共20分)
(1)假定二叉树结点的存储结构定义如下:
typedef struct node
{ char data;
struct node *lchild;
struct node *rchild;
}NODE;
试编写C(或Java)语言函数void exchange(NODE *t ),其功能是交换二叉树的各
结点的左右子树(根结点指针为t)。
(2)以二叉链表为存储结构,编写按层次顺序(同一层自左至右)遍历二叉树的算法。
(3)给定头指针为ha的单链表A,和头指针为hb的递增有序单链表B。试利用表A和
表B的结点,将表A和表B归并为递增有序单链表C,其头指针为hc(允许有相同
的data值,表A、B、C均带有头结点)。
阅读下面的函数merge(),请给有下划线的位置填空,使之成为完整的算法(程序)。
表结点的类型定义如下:
struct node { int data;
struct node *next; } ;
C语言算法如下:
void merge(struct node *ha, struct node *hb, struct node *hc)
{
struct node *pc, *qc, *pa, *fa;
int search;
hc=hb;
hb=NULL;
pa=ha->next;
free(ha);
while(pa)
{
pc=hc;
qc=hc->next;
search=1; //设置查找标志
while(qc&&search)
{
if(pa->data<=qc->data) ① ;
共 5页 第5页

else
{ pc=qc;
qc= ② ; }
}
fa= ③ ;
pa= ④ ;
fa->next= ⑤ ;
⑥ ;
}
}

相关文档
最新文档