中国农业大学_821数据结构_《数据结构》实验笔记(4)
中国农业大学_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)
第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)
第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)
程序的规范说明对于每一个应用程序所解决的问题,都应该有规范说明的文档。
书写合格的文档和编程调试同等重要,是合格软件必不可少的文献。
采用的规范说明格式如下: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)
第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 {
中国农业大学_821数据结构_《数据结构》考试大纲
数据结构(Data Structure)考试大纲一、课程性质与设置目的1. 课程性质和特点数据结构是高等院校计算机科学、信息科学及相关专业考试计划中一门专业基础课,在计算机软件的各个领域中均会使用到数据结构的有关知识。
本课程的目的和任务是使学习者较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。
2. 本课程的基本要求从数据结构的逻辑结构、存储结构和数据运算三个方面去掌握线性表、栈、队列、串、数组、广义表、树、图和文件等常用的数据结构。
掌握在各种常用的数据结构上实现的排列和查找运算。
对算法的时间和空间复杂性有一定的分析能力。
针对简单的应用问题,应能选择合适的数据结构及设计有效的算法解决之。
3. 与相关课程的联系本课程的先修课程为离散数学和高级语言程序设计,后续课程为操作系统、数据库原理等。
数据结构中存储结构及基本运算的实现需要程序设计的基本知识和编程的经验及能力,本课程的大部分实例均是用C语言实现的,故要求较熟练地掌握C语言。
二、考试内容与考核目标第1章数据结构概述1. 课程内容(1) 基本概念和术语(2) 学习数据结构的意义(3) 算法的描述和分析2. 学习目的与要求本章的目的是介绍数据结构中常用的基本概念和术语以及学习数据结构的意义,要求了解本章介绍的各种基本概念和术语,掌握算法描述和分析的方法。
本章重点是了解数据结构的逻辑结构、存储结构及数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。
3. 考核知识点与考核要求1. 数据结构的基本概念和术语、要求达到“识记”层次。
1.1 数据、数据元素、数据项、数据结构等基本概念。
1.2 数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。
1.3 数据结构的两大类逻辑结构和四种常用的存储表示方法。
2. 数据结构在软件系统中的作用,要求达到“识记”层次。
2.1 数据结构在各种软件系统中所起的作用。
中国农业大学硕士研究生入学考试初试模拟题821数据结构(三套)
中国农业大学
2011 年攻读硕士学位研究生入学考试模拟试题(一)
科目代码: 821 科目名称: 数据结构
考生注意: 所有大题务必书写在考场提供的答题纸上,写在本试题单上的答题一 律无效(本题单不参与阅卷) 。
报考专业: 一、选择题 1. 算法的时间复杂度取决于( ) A.问题的规模 B. 待处理数据的初态 C. A 和 B
四、假设按低下标优先存储整型数组 A(-3:8,3:5,-4:0,0:7)时,第一个元素的字节 存储地址是 100,每个整数占 4 个字节,问 A(0,4,-2,5)的存储地址是什么?
五、算法题 1.设 s、t 为两个字符串,分别放在两个一维数组中,m、n 分别为其长度,判断 t 是否为 s 的子串。如果是,输出子串所在位置(第一个字符) ,否则输出 0。 (注:用程序实现)
2.下面关于线性表的叙述中,错误的是哪一个? A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 报考院校: C.线性表采用链接存储,不必占用一片连续的存储单元。 3. 栈在( )中应用。 B. 子程序调用 C. 表达式求值 D. A,B,C )
A. 递归调用
9 如果要求一个线性表既能较快的查找, 又能适应动态变化的要求, 则可采用( A. 分快查找 B. 顺序查找 C. 折半查找 D. 基于属性
10 组记录的关键码为(46,79,56,38,40,84) ,则利用快速排序的方法,以第一个记录 为基准得到的一次划分结果为( A.(38,40,46,56,79,84) C.(40,38,46,56,79,84) ) 。 B. (40,38,46,79,56,84) D. (40,38,46,84,56,79)
2.已知深度为 h 的二叉树以一维数组 BT(1:2 -1)作为其存储结构。请写一算法,求该二叉 树中叶结点的个数。
中国农业大学_821数据结构_《数据结构》习题(8)
6. 已知长度为 12 的表 ( Jan, Feb, Mar, Apr, May, Jun, July, Aug,, Sep, Oct, Nov, Dec ): (1) 试按表中顺序依次将元素插入一棵初始为空的二叉树。 (字符之间以字典顺序比较 大小) 画出插入完成之后的二叉排序树, 且求在等概率的情况下查找成功的平均查找长度。 (2) 如果对表中元素先排序构成有序表,试求在等概率情况下对有序表进行折半查找 时,查找成功的平均查找长度。 (3) 按表中元素顺序构造出一棵相应的平衡二叉树,并求出在等概率的情况下查找成 功的平均查找长度。 7. B+树和 B-树的主要差异树什么? 8. 什么叫哈希法?哈希法中为什么会出现冲突? 9. 设关键值集合为 { 016, 087, 154, 170, 275, 426, 503, 509, 512, 612, 653, 678 },设计 一种哈希表,取装填因子 = 0.5,根据选择的哈希函数,计算出对应的地址,并统计出发 生冲突的次数。 10. 设关键值集合为 { SUN, GAO, HUA, WAN, PEN, YAN, LIU, ZHE, YAO, CHE }, 试 构造装填因子 = 10/13 的哈希表,取关键值的首字母在字母表中的序号(字典序)作为哈 希函数值,用线性探测法解决冲突,画出其哈希表。 11. 假定一个待哈希存储的线性表为 ( 32, 75, 63, 48, 94, 25, 36, 18, 70 ), 哈希地址空间 为[ 0 . . 10 ],如果采用除留余数法构造哈希函数和分别采用步长为 1 及步长为 3 的线性探 测法处理冲突,试分别给出它们对应的哈希表,并分别求出在等概率情况下查找成功时的 平均查找长度。 12. 将序列 (13, 15, 22, 8, 34, 19, 21) 插到一个初始时是空的哈希表中, 哈希函数采用 hash (x) = 1 + ( x MOD 7 )。 (1) 使用线性探测法解决冲突; (2) 使用步长为 3 的线性探测法解决冲突;
中国农业大学_821数据结构_《数据结构》习题(3)
第3章栈和队列一、回答题1. 栈和线性表的区别是什么?栈和队列的相同点和不同点是什么?2. 如果进栈的数据元素序列为A、B、C、D,则可能得到的出栈序列有多少种?写出全部可能的序列。
3. 如果进栈的数据元素序列为1、2、3、4、5、6,能否得到4、3、5、6、1、2和1、3、5、4、2、6的出栈序列?并说明为什么不得到或如何得到。
二、填空题1. 线性表、栈和队列都是结构,可以在线性表的位置插入和删除数据元素;对于栈只能在插入和删除数据元素;对于队列只能在插入数据元素和在删除元素。
2. 在一个长度为n的线性表的第i个数据元素(1≤i≤n+1)之前插入一个数据元素时需向后移动个数据元素。
3. 在一个长度为n的线性表中,删除第i个数据元素(1≤i≤n)时需向前移动个数据元素。
4. 向栈中压入数据元素的操作是,从栈中弹出数据元素的操作是。
5. 在一个循环队列中,队头指针指向队首数据元素的,从循环队列中删除一个数据元素的操作是。
6. 在具有n个单元的循环队列中,队满时共有个数据元素(假定每个数据元素占一个单元)。
三、算法题1. 对于一个具有maxsize个单元的循环队列,设计一个算法,输出其中的所有数据元素(假定每个数据元素占一个单元)。
2. 如果用一个循环数组Q[0..num-1]表示队列时,该队列只有一个头指针front,不设队尾指针rear,而改置计数器count用以记录队列中结点的个数。
首先编写实现队列的5个基本运算的算法:InitQueue,EmptyQueue,GetHead,EnQueue,DeQueue;然后试回答:队列中能容纳的元素的最多个数是num-1吗?3. 假设一个算术表达式中包含圆括弧、方括弧和花括弧3种类型的括弧,编写一个判别表达式中括弧是否正确配对的算法。
以字符“#”作为算术表达式的结束符。
4. 某汽车轮渡口,过江渡船每次能载10辆车过江。
过江车辆分为客车类和货车类,上船有如下规定:(1) 同类车先到先上船,客车先于货车上渡船,且每上4辆客车才允许上1辆货车;(2) 若等待客车不足4辆,则以货车代替;若无货车等待,则允许客车都上船。
中国农业大学_821数据结构_《数据结构》习题(1)
n 1时 n 1时
① 。 (注意,n为求解问题的规模,为简单起见,设n是2的正整
① 。 (注:n为求解问题的规模)
for ( i = j; i <= n; i++ ) if ( a[i] < a[j] ) { temp = a[i]; } // end_if j++; Order ( j, n ); } // end_if } // Order void main ( ) { // 递归调用Order函数 a[i] = a[j]; a[j] = temp;
① 。 (注:n为求解问题的规模)
while ( x >= (y+1)*(y+1) ) y++; }
3. 下面程序段的时间复杂度是
void main ( ) i = 1; do { k += 10*i; i++; } while ( i == n ) } { k = 0; n = 100;
① 。 (注:n为求解问题的规模)
Order ( 0, 7 ); for ( i = 0; i <= 7; i++ ) cout << endl; } // main cout << a[i] << " ";
10. 斐波那契数列 Fn 定义如下:F0 = 0,F1 = 1,Fn = Fn-1 + Fn-2,其中 n = 2,3,…。 请就此斐波那契数列,回答下列问题。 (1) 在递归计算Fn时,需要对较小的Fn-1,Fn-2,…,F1,F0精确计算 (2) 如果用大O表示法,那么递归计算Fn时递归函数的时间复杂度是 ① 次。
国家开放大学《数据结构》课程实验报告(实验4——二叉树)参考答案
(实验4二叉树)
学生姓名
学 号
班 级
指导老师
实验名称
实验成绩
实验报告
实ቤተ መጻሕፍቲ ባይዱ
验
概
述
实验目的:
(1)根据数组tree,建立与该二叉树对应的链式存储结构。
(2)对该二叉树采用中序遍历法显示遍历结果。
实验要求:
(1)在主函数中,通过键盘输入建立设定的完全二叉树的顺序存储结构。
(2)设计子函数,其功能为将顺序结构的二叉树转化为链式结构。
(2)中序遍历采用递归算法,即中序遍历左子树、访问根结点、中序遍历右子树。
实
验
内
容
程序代码:
/*实验3.1二叉树的顺序存储结构和链式存储结构*/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
/*二叉树链式存储结构结点定义*/
typedef struct BTreeNode
指
导
教
师
评
语
指导教师 日期
(3)设计子函数,其功能为对给定二叉树进行中序遍历,显示遍历结果。
(4)通过实例判断算法和相应程序的正确性。
实验基本原理:
(1)顺序存储的二叉树转化为链式存储结构,采用递归算法,递归函数的形式为Creab(tree,n,i,b),其中形参:tree为顺序存储二叉树的数组,n为二叉树的结点数,i是二叉树某结点在数组tree中的下标(初始值为1),b为要建立的链式存储二叉树结点指针。转化时,首先建立*b结点,将tree[i]的值赋给*b的数据域,再调用递归函数分别构造左子树和右子树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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) 保存和打印出程序的运行结果,并结合程序进行分析。