中国农业大学_821数据结构_《数据结构》实验笔记(4)

合集下载

中国农业大学_821数据结构_《数据结构》习题(6)

中国农业大学_821数据结构_《数据结构》习题(6)

第6章 二叉树与树一、回答题1. 图6-1所示的树的叶子结点、非中端结点、每个结点的度及树的深度各是多少?图6-1 树2. 已知一棵树边的集合表示为:{ ( L, N ), ( G, K ), ( G, L ), ( G, M ), ( B, E ), ( B, F ), ( D, G ), ( D, H ), ( D, I ), ( D, J ), ( A, B ), ( A, C ), ( A, D ) },画出这棵树,并回答以下问题:(1) 树的根结点是哪个?哪些是叶子结点?哪些是非终端结点? (2) 树的度是多少?各个结点的度是多少? (3) 树的深度是多少?各个结点的层数是多少?(4) 对于结点G ,它的双亲结点、祖先结点、孩子结点、子孙结点、兄弟和堂兄弟分别是哪些结点?3. 如果一棵度为m 的树中,度为1的结点数为n 1,度为2的结点数为n 2,……,度为m 的结点数为n m ,那么该树中含有多少个叶子结点?有多少个非终端结点?ABECDFGHJI4. 任意一棵有n 个结点的二叉树,已知有m 个叶子结点,能否证明度为2结点有m-1个?5. 已知在一棵含有n 个结点的树中,只有度为k 的分支结点和度为0的叶子结点,那么该树含有的叶子结点的数目是多少?6. 一棵含有n 个结点的k 叉树,可能达到的最大深度和最小深度各为多少?7. 对于3个结点A 、B 、C ,可以过程多少种不同形态的二叉树?8. 深度为5的二叉树至多有多少个结点?9. 任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序是发生改变?不发生改变?不能确定?10. 设n 、m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是什么? 11. 已知某二叉树的后续遍历序列是dabec ,中序遍历序列是debac ,那么它的前序遍历序列是什么?12. 对一棵满二叉树,m 个树叶,n 个结点,深度为h ,则n 、m 和h 之间的关系是什么? 13. 对图6-2(a)和(b)所示的二叉树,它们的经过先序、中序和后序遍历后得到的结点序列分别是什么?画出它们的先序线索二叉树和后序线索二叉树。

中国农业大学_821数据结构_《数据结构》习题(9)

中国农业大学_821数据结构_《数据结构》习题(9)

第9章内部排序一、问答题1. 什么是内部排序?什么是排序方法的稳定性?2. 对于本章介绍的内部排序方法,哪几种是稳定的?哪几种是不稳定的?对不稳定的排序方法试举例说明。

3. 对于给定的一组记录的关键字:23,13,17,21,30,60,58,28,30,90。

试分别写出用下列排序方法对其进行排序时,每一趟排序后的结果:(1)直接插入排序;(2)希尔排序;(3)冒泡排序;(4)直接选择排序;(5)快速排序(6)堆排序(7)归并排序。

4. 对长度为n的记录序列进行快速排序时,所需要的比较次数依赖于这n个元素的初始序列。

(1)n = 8时,在最好的情况下需要进行多少次比较?试说明理由。

(2)给出n = 8时的一个最好情况的初始排列实例。

5 试为下列各种情况选择合适的排序方法:(1)n = 30,要求在最坏的情况下,排序速度最快;(2)n = 30,要求排序速度既要快,又要排序稳定。

6. 判别以下序列是否为堆(所有的非叶子结点的关键字值k i均不大于其左右两个分支结点的关键字值k2和k2i+1。

),如果不是,则把它调整为堆。

(1)( 100, 86, 48, 73, 35, 39, 42, 57, 66, 21 );(2)( 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 );(3)( 103, 97, 56, 38, 66, 23, 42, 12, 30, 52, 06, 20 );(4) ( 05, 56, 20, 03, 23, 40, 38, 29, 61, 05, 76, 28, 100 )。

7. 一组待排序记录的关键字是:986,321,123,432,500,654,018,765,987,210。

按照LSD方法写出基数排序的过程和结果。

8. 试证明:如果对于一个长度为n的任意文件进行排序,则至少需进行nlog2n次比较。

9. 试构造对5个整数元素进行排序,最多只用7次比较的算法思想。

天大《数据结构》学习笔记四

天大《数据结构》学习笔记四

主 题: 《数据结构》学习笔记 内 容:《数据结构》学习笔记四——树一、树形结构1、术语:树、子树、根结点、结点的度、叶结点、树的度、结点的子结点、结点的父结点、结点 的层次、树的深度(高)、森林。

2、二叉树: 2.1二叉树不属于“树”。

2.2 二叉树的性质:①在二叉树的第i 层上至多有2i -1个结点(i ≥1)②深度为K 的二叉树至多有2k-1个结点(k ≥1) ③对任何一棵二叉树,如叶结点的个数为n 0,2度结点个数为n 2则n 0=n 2+1 说明:分支数为B ,二叉树的结点总数为n =n 0+n 1+ n 2 ∵B =n -1(从结点的头上看) B =n 1+2n 2(从结点的下方看) ∴n -1=n 1+2n 2即n 0+n 1+n 2-1=n 1+2n 2 ∴n 0=n 2+13、二叉树的存储结构:s t r u c t n o d e{c h a r d a t a ;s t r u c t n o d e *l c h i l d ; s t r u c t n o d e *r c h i l d ; }4、树转换为二叉树:(右链为兄弟) A BC E A B CDE AB C DE F二、遍历二叉树1、规则:1.1先序:打印,遍历左子树,遍历右子树。

A ,B ,D ,C ,E ,F 1.2中序:遍历左子树,打印,遍历右子树。

D ,B ,A ,E ,C ,F 1.3后序:遍历左子树,遍历右子树,打印。

D ,B ,E ,F ,C ,Aa*b-c 此式可画成一个二叉树,如左:先序: -*abc 中序: a*b-c后序: ab*c-3、程序: 3.1先序: preorder(p)struct node *p {if (p){printf(“%c,”,p->data); preorder (p->lchild); preorder(p->rchild); } }3.2中序: …… { preorder (p->lchild);printf(“%c,”,p->data); preorder(p->rchild); } ……3.3后序: ……RC E F H K R ABCDEFGHK{ preorder (p->lchild);preorder(p->rchild);printf(“%c,”,p->data);}……4、求已知二叉树上的叶结点个数:4.1思路:遍历二叉树,如遇到叶结点,则记数器增值。

中国农业大学_821数据结构_《数据结构》习题(10)

中国农业大学_821数据结构_《数据结构》习题(10)

第10章文件及其应用一、问答题1. 对数据库文件进行查询有几种方式?2. 在物理记录和逻辑记录之间可能有几种关系?3. 在哈希文件中,如果要修改的字段中有一些是关键字的一部分,那么为什么这样的修改相当于删除加插入运算?4. 索引文件的检索分哪两步完成?5. 直接存取文件是用什么方式组织的?6. 树索引文件的特点是什么?二、填空题1. 索引顺序文件既能进行存取,又能进行存取,因而是最常用的文件组织方法之一,通常用结构来组织索引。

2. 倒排文件的主要优点是。

3. 对一个大文件进行排序,要研究在外设上的排序技术,即。

4. 哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数是一对一的关系,则选择好的方法是哈希文件(Hash)的关键。

5. 倒排文件包含有若干个倒排表,倒排表的内容是,倒排文件检索速度快,但是修改维护较难。

6. 顺序文件采用顺序结构实现文件的存储,对大型文件的少量修改要求重新复制整个文件,代价很高,采用方法可以降低所需要的代价。

7. 文件要在磁盘上生成,在建立文件时,记录可以不必顺序存放,只要采用某种方式建立起逻辑记录与记录的物理地址的对应关系即可。

8. 文件要在磁盘和磁带等多种媒体上生成,特别适宜于全文件的读写,原则上文件的更新用文件全体复制进行。

9. 文件,在建立文件时,给每一个记录编号,系统保持记录号到记录的物理位置的对照表,记录号不作为记录中的内容,也不出现在对照表中。

10 存放在磁盘上的链文件,也称为表,此表指出索引文件中各记录物理位置。

三、设计题1. 设某文件有14个记录,其关键字分别为{25, 75, 125, 93, 241, 203, 19, 198, 121, 173, 218, 80, 214, 329}。

桶的容量M = 3,此时采用除留余数法构造哈希函数,且哈希函数为hash (key) = key % 5,设计并画出哈希文件的结构图,并说明如何对其进行删除或插入、检索等操作。

中国农业大学_821数据结构_《数据结构》笔记(2)

中国农业大学_821数据结构_《数据结构》笔记(2)

程序的规范说明对于每一个应用程序所解决的问题,都应该有规范说明的文档。

书写合格的文档和编程调试同等重要,是合格软件必不可少的文献。

采用的规范说明格式如下:1. 问题描述(1) 题目内容(2) 基本要求(3) 测试数据这一步旨在建立问题提出的背景环境,指明问题求解的要求。

2. 需求分析(1) 程序所能达到的基本功能(2) 输入的形式和输入值的范围(3) 输出的形式(4) 测试数据要求这一步以无歧义的方式陈述说明程序设计的任务和功能。

3. 概要设计(1) 所需要的抽象数据类型ADT,它们的作用(2) 主程序流程及模块调用关系(3) 核心的粗线条伪码算法这一步说明程序中要用到的所有抽象数据类型定义、主程序流程和模块间的层次关系。

4. 详细设计(1) 实现概要设计的数据类型,重点语句加注释(2) 每个操作的伪码算法,重点语句加注释(3) 主程序和其他模块的伪码算法,重点语句加注释(4) 函数调用关系图这一步实现概要设计中定义的所有数据类型,对每个操作和核心模块写出伪码算法,画出函数的调用关系图。

5. 调试分析(1) 设计与调试过程中遇到的问题及分析、体会(2) 主要和典型算法的时空复杂度分析这一步主要记载调试过程、经验体会,并进行算法的时空分析。

6. 使用说明简要说明程序运行操作步骤这一步讲述操作步骤和运行环境。

7. 测试结果包括输入和输出,输入集应该多于需求分析的数据这一步应该包括运行的各种数据集合所有的输入输出情况。

8. 附录(带注释的源程序)这一步主要指源程序代码和下达任务的其他原始文件。

中国农业大学_821数据结构_《数据结构》习题(2)

中国农业大学_821数据结构_《数据结构》习题(2)

第2章线性表一、回答题1. 线性表的两种存储结构各有哪些优缺点?2. 对于线性表的两种存储结构,如果有n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化,线性表的总数也会自动改变,在此情况下,应该选用哪种存储结构,为什么?3. 对于线性表的两种存储结构,如果线性表的总数基本稳定,并且很少进行插入和删除操作,但是要求以最快的速度存取线性表中的元素,那么应该选用哪种存储结构?试说明理由。

二、填空题1. 已知L是无头结点的单链表,且p结点既不是第一个结点,也不是最后一个结点,试从下列提供的语句中选出合适的语句序列:(1) 在p结点之后插入s结点:(2) 在p结点之前插入s结点:(3) 在单链表L首插入s结点:(4) 在单链表L后插入s结点:提供的语句:①p->next = s;② p ->next = p ->next ->next; ③ p ->next = s ->next; ④ s ->next = p ->next; ⑤ s ->next = L; ⑥ s ->next = p; ⑦ s ->next = NULL; ⑧ q = p;⑨ while ( p ->next ! = q ) p = p ->next ; ⑩ while ( p ->next ! = NULL ) p = p ->next ; p = q; p = L; L = s; L = p;2. 已知p 结点是某双向链表的中间结点,试从下列提供的语句中选出合适的语句序列。

(1) 在p 结点之后插入s 结点: (2) 在p 结点之前插入s 结点: (3) 删除p 结点的直接后继结点: (4) 删除p 结点的直接前驱结点:提供的语句:① p ->next = p ->next ->next; ② p ->prior = p ->prior ->prior; ③ p ->next = s; ④ p ->prior = s;11 12 13 14⑤ s ->next = p; ⑥ s ->prior = p; ⑦ s ->next = p ->next; ⑧ s ->prior = p ->prior; ⑨ p ->prior ->next = p ->next; ⑩ p ->prior ->next = p; p ->next ->prior = p; p ->next ->prior = s; p ->prior ->next = s; p ->next ->prior = p ->prior; q = p ->next; q = p ->prior; delete p; delete q;3. 在顺序表中插入或删除一个数据元素,需要平均移动个元素,具体移动的元素个数与有关。

中国农业大学821数据结构考试科目大纲

中国农业大学大学2015年硕士研究生入学考试专业课考试大纲一、考查目标1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。

2.掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。

3.能够选择合适的数据结构和方法进行问题求解。

二、考试形式和试卷结构1.试卷满分及考试时间试卷满分150分,考试时间180分钟。

2.答题方式答题方式为笔试、闭卷。

3.试卷内容与题型结构选择题10题每小题2分共20分填空题10题每小题2分共20分判断题10题每小题2分共20分应用题4题每小题10分共40 分算法题5题每小题10分共50 分三、考查内容1.概念(1)基本概念和术语●数据●数据结构●抽象数据类型(2)算法的描述和分析●算法、算法的时间复杂度和空间复杂度概念●算法描述和算法分析的方法,对于一般算法能分析出时间复杂度2.线性表(1)线性表的概念●线性表的逻辑结构●线性表的存储结构:顺序表,单链表,双链表,循环链表(2)线性表的实现●顺序存储结构:查找、插入、删除等主要操作及其平均时间性能分析●链式存储结构:查找、插入、删除等主要操作及其平均时间性能分析3.栈、队列(1)栈和队列的概念●栈和队列的逻辑结构●栈和队列的存储结构:顺序栈,循环队列,链式栈,链式队列(2)栈和队列的实现●顺序存储结构:入栈、出栈、入队、出队等主要操作及其平均时间性能分析●链式存储结构:入栈、出栈、入队、出队等主要操作及其平均时间性能分析4.广义表(1)广义表的概念●数组和广义表的逻辑结构●数组的存储结构:特殊矩阵压缩存储、稀疏矩阵压缩存储(三元组表)●广义表的存储结构:链式存储(2)和广义表的实现●数组顺序存储结构:一般数组顺序存储的地址计算方法●广义表链式存储结构:非空广义表的求表头和表尾运算5.二叉树(1)树和二叉树的概念●树和二叉树的逻辑结构●树和二叉树的存储结构:树的孩子兄弟二叉链表、二叉树的二叉链表●树和二叉树的遍历:树的三种遍历、二叉树的三种遍历●树和二叉树的转换(2)树和二叉树的实现●二叉树的递归遍历●哈夫曼树●哈夫曼编码6.图(1)图的概念●图的逻辑结构●图的存储结构:邻接矩阵、邻接表●图的遍历:深度优先搜索、广度优先搜索(2)图的实现●最小(代价)生成树:Prim和Kruskal方法●最短路径:Dijkstra方法●拓扑排序●关键路径7.查找(1)查找的概念●查找表、查找分类、查找结构●查找算法效率的评判标准:平均查找长度(2)静态表及其查找●顺序查找●折半查找(3)动态表及其查找●二叉排序树●平衡二叉树(4)哈希表及其查找●哈希函数●处理冲突方法●哈希查找(5)各种查找算法的分析8.排序(1)排序的概念●排序方法稳定性、排序分类●排序算法效率的评判标准(2)插入排序●简单插入排序●希尔排序(3)交换排序●冒泡排序●快速排序(4)选择排序●简单选择排序●堆排序(5)归并排序●二路归并排序●分治归并排序(6)各种排序算法的比较四、题型举例1.选择题在一棵树中,如果结点A有3个兄弟,B是A的双亲,则结点B的度是。

中国农业大学_821数据结构_《数据结构》期末题(2套)


其散列函数为 h(key) = key % 13,处理冲突的方法为双重散列法,探查序列为: hi = (h(key) + i * 3) % 13, i = 1, 2, … 问:对表中关键字 61 进行查找时,所需进行的比较次数为多少?依次写出每次的计算公式 和值。 (10 分) 四、阅读下面程序,回答问题 (10 分) void function(Link **Head) { Link *pt1, *pt2, *tmp; pt1 = *Head; if (pt1 == NULL) return; pt2 = pt1->next; pt1->next = NULL; while (pt2 != NULL) { tmp = pt2->next; pt2->next = pt1; pt1 = pt2; pt2 = tmp;
D. 排序算法
2. 在数据结构中,可用存储顺序代表逻辑顺序的数据结构为 ( 3. 在数据结构中,按逻辑结构可把数据结构分为 ( A. 静态结构和动态结构 C. 顺序结构和链式结构 4. 对链式存储的正确描述是 ( A. 结点之间是连续存储的 C. 各结点类型可以不一致 A. 串中元素只能是字母 C. 串是一种特殊的线性表 )
数据结构 试题(A )卷(闭卷)
2009--2010 学年第 一 学期
学号
一、单项选择题 (每题 1 分,共 15 分) 1. 在计算机科学中,算法指的是 ( A. 计算机程序 A. 顺序结构 ) B. 描述问题的方法 B. 二叉排序树
姓名
C. 解决问题的有限步骤序列 ) D. Hash 表 C. 链式结构 )
14. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 ( 15. 在一个顺序存储的有序序列中查找指定的关键字,其时间复杂度的下界是 ( A. O(logn) B. O(nlogn) C. O(n) D. O(1) 二、已知一个无向图的顶点集为{ a, b, c, d, e, f },其邻接矩阵如下所示(0-无边,1-有边)。

中国农业大学821数据结构2019年考研专业课初试大纲

2019年中国农业大学考研专业课初试大纲
821数据结构考试大纲
一、考查目标
1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。

2.掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。

3.能够选择合适的数据结构和方法进行问题求解。

二、考试形式和试卷结构
1.试卷满分及考试时间
试卷满分150分,考试时间180分钟。

2.答题方式
答题方式为笔试、闭卷。

3.试卷内容与题型结构
单选题10题每小题2分共20分
填空题10题每小题2分共20分
简答题 5题每小题5分共25分
综合题 3题每小题15分共45 分
算法题 4题每小题10分共40 分
三、考查内容
1.概念
(1)基本概念和术语
●数据
●数据结构
●抽象数据类型
(2)算法的描述和分析
●算法、算法的时间复杂度和空间复杂度概念
●算法描述和算法分析的方法,对于一般算法能分析出时间复杂度
2.线性表
(1)线性表的概念
1
精都考研网(专业课精编资料、一对一辅导、视频网课)。

中国农业大学_821数据结构_《数据结构》笔记(1)


1
建立数据结构模型设计抽象数据类型
面向对象编程的关键是分析客观问题中主要操作对象,并与计算机世界里特定抽象数据类型
的实例对象相对应,形成对象模型。程序主要流程可归结为各种实例对象间的相互操作。 集合是现代代数学的重要基础,也是当今计算机科学中经常用到的基本概念,在很多应用问 题中集合及其成员也是其中主要的操作对象。如何在计算机中表示和实现集合,取决于该集合的 大小和所进行的操作。假设现在讨论的问题中的集合操作仅限于“求并” ,而集合的大小和集合 的成员不限,则宜采用有序表表示。由此首先需要设计一个有序表的抽象数据类型并实现之,集 合求并的算法则通过有序表的实例对象的操作完成。其算法思想是:依次比较两个有序表对象的 每个元素,将符合“并”条件的元素复制到结果有序表对象中。 抽象数据类型“有序表”定义如下: ADT OrderedList { n≥0 } i = 2, … , n }
从问题到程序的求解过程
从提出实际问题到编写程序并最后调试通过形成软件,是软件工程学(研究大型软件的设计 方法)和程序设计方法学(研究小规模程序的设计方法)研究的范畴。这里我们仅以面向对象编 程的思想讨论以抽象数据类型为中心的程序设计方法。这个程序设计方法大致可以分为以下 4 个 步骤: (1) 建立数据结构模型设计抽象数据类型; (2) 进行主算法的设计; (3) 实现抽象数据类型; (4) 编制可以上机的程序代码并进行静态测试和动态调试。 下面以有序表为基础, 研究分析一个整数集合求并运算实例, 对上述 4 个步骤予以分别讨论。
// 处理 a <= b 的情况 ListInsert ( Lc, a ); // 在 Lc 中插入一个其值和 a 相同的元素 ia++; if ( a == b ) ib++; } // end_if else {
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 数组与广义表
课程实验共安排8个难度各易的实验,训练重点在于掌握基本的数据结构,而不强调面面俱到。

通过实验,掌握抽象数据类型的概念和基本数据结构,掌握各种数据结构内在的逻辑关系,各种数据结构在计算机中的存储表示,基于各种数据结构上的基本运算、算法实现及算法分析。

●实验目的
(1) 了解数组的存储表示方法,掌握其在作为运行的存储结构中的地址计算方法。

(2) 了解特殊矩阵及稀疏矩阵压缩存储特点和适用范围,领会其运算采用的处理方法。

(3) 了解广义表的结构特点及存储表示方法,掌握其主要运算的实现方法。

●实验内容
1. 鞍点问题
[问题描述] 若矩阵A中的某一元素A[i, j]是第i行中的最小值,而又是第j列中的最大值,则称A[i, j]为矩阵A中的一个鞍点。

请写出一个可确定此鞍点位置的算法(如果这个鞍点存在),并给出此算法的时间复杂度。

[基本要求] 要求算法要考虑某行中具有多个相同的且又是该行中最小的元素的情况。

2. 对称矩阵运算
[问题描述] 已知A和B为两个n×n阶的对称矩阵,试编写一个计算对称矩阵A和B的乘积的函数。

[基本要求] 输入时对称矩阵只输入下三角形元素,存入一维数组,即采用压缩存储。

3. 广义表运算
[问题描述] 在给定的广义表中查找数据为x的结点,编写该算法。

[基本要求] 广义表采用扩展线性链表存储表示。

●实验要求
(1) 认真分析题目。

(2) 进行算法设计。

(3) 编写程序代码
(4) 上机调试程序。

(5) 保存和打印出程序的运行结果,并结合程序进行分析。

相关文档
最新文档