中国农业大学_821数据结构_《数据结构》习题(6)
中国农业大学_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.填空题⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1)【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵ 任何连通图的连通分量只有一个,即是()。
【解答】其自身⑶ 图的存储结构主要有两种,分别是()和()。
【解答】邻接矩阵,邻接表【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。
⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。
【解答】O(n+e)【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。
⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。
【解答】求第j列的所有元素之和⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。
【解答】出度⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。
【解答】前序,栈,层序,队列⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal算法求最小生成树的时间复杂度为()。
【解答】O(n2),O(elog2e)【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。
农大数据结构答案
农大数据结构答案(1)将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中不允许有重复的数据。
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){pa=La->next; pb=Lb->next;Lc=pc=La; //用La的头结点作为Lc的头结点while(pa && pb){if(pa->datadata){ pc->next=pa;pc=pa;pa=pa->next;}else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}else {// 相等时取La的元素,删除Lb的元素pc->next=pa;pc=pa;pa=pa->next;q=pb->next;delete pb ;pb =q;}}pc->next=pa?pa:pb; //插入剩余段delete Lb; //释放Lb的头结点}(2)将两个非递减的有序链表合并为一个非递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中允许有重复的数据。
void union(LinkList& La, LinkList& Lb, LinkList& Lc, ) {pa = La->next; pb = Lb->next; // 初始化Lc=pc=La; //用La的头结点作为Lc的头结点Lc->next = NULL;while ( pa || pb ) {if ( !pa ) { q = pb; pb = pb->next; }else if ( !pb ) { q = pa; pa = pa->next; }else if (pa->data <= pb->data ) { q = pa; pa = pa->next; }else { q = pb; pb = pb->next; }q->next = Lc->next; Lc->next = q; // 插入}delete Lb; //释放Lb的头结点}(3)已知两个链表A和B分别表示两个集合,其元素递增排列。
2020年中国农业大学821数据结构考试大纲
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)线性表的概念●线性表的逻辑结构●线性表的存储结构:顺序表,单链表,双链表,循环链表,静态链表(2)线性表的实现●顺序存储结构:查找、插入、删除等基本操作及其平均时间性能分析●链式存储结构:查找、插入、删除等基本操作及其平均时间性能分析3.栈、队列(1)栈和队列的概念●栈和队列的逻辑结构●栈和队列的存储结构:顺序栈,循环队列,链式栈,链式队列(2)栈和队列的实现●顺序存储结构:入栈、出栈、入队、出队等基本操作及其平均时间性能分析●链式存储结构:入栈、出栈、入队、出队等基本操作及其平均时间性能分析4.数组和广义表(1)数组和广义表的概念●数组和广义表的逻辑结构●数组的存储结构:特殊矩阵压缩存储、稀疏矩阵压缩存储(三元组表)●广义表的存储结构:链式存储(2)数组和广义表的实现●数组顺序存储结构:一般数组顺序存储的地址计算方法●广义表链式存储结构:非空广义表的求表头和表尾等基本操作5.树和二叉树(1)树和二叉树的概念●树和二叉树的逻辑结构●树和二叉树的存储结构:树的孩子兄弟表示法、二叉树的二叉链表●树和二叉树的遍历:树的三种遍历方法、二叉树的三种遍历方法●树和二叉树的转换方法(2)树和二叉树的实现●二叉树的递归遍历●Huffman树●Huffman编码6.图(1)图的概念●图的逻辑结构●图的存储结构:邻接矩阵、邻接表●图的遍历:深度优先搜索方法、广度优先搜索方法(2)图的实现●最小(代价)生成树:Prim和Kruskal方法●最短路径:Dijkstra方法●拓扑排序●关键路径7.查找(1)查找的概念●查找表、查找分类、查找结构●查找算法效率的评判标准:平均查找长度(2)静态表及其查找●顺序查找●折半查找(3)动态表及其查找●二叉排序树●平衡二叉树(4)Hash表及其查找●Hash函数●处理冲突方法●Hash查找(5)各种查找算法的分析8.排序(1)排序的概念●排序方法稳定性、排序分类●排序算法效率的评判标准(2)插入排序●简单插入排序●希尔排序(3)交换排序●冒泡排序●快速排序(4)选择排序●简单选择排序●堆排序(5)归并排序●二路归并排序●分治归并排序(6)各种排序算法的比较四、题型举例1.选择题在单链表中成功查找一个元素的等概率下的平均搜索长度是。
中国农业大学_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数据结构_《数据结构》模拟题及答案(3套)
报考专业:
1 算法的优劣与算法描述语言无关,但与所用计算机有关。( ) ) 2 链表中的头结点仅起到标识的作用。( 3 有 n 个 数 顺 序 ( 依 次 ) 进 栈 , 出 栈 序 列 有 Cn 种 , Cn=[1/ ( n+1 ) ]* (2n)!/[(n!)*(n!)]。 ( ) 4 串是一种数据对象和操作都特殊的线性表。 ( ) 5 从逻辑结构上看,n 维数组的每个元素均属于 n 个向量。( ) ) 6 形结构中元素之间存在一个对多个的关系。( 7 强连通图的各顶点间均可达。 ( ) 8 在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅 与表中元素个数有关,而且与每块中元素个数有关。( ) 9 影响外排序的时间因素主要是内存与外设交换信息的总次数。( ) ) 10 权无向图的最小生成树必是唯一的。( 三、 一棵二叉树中的结点的度或为 0 或为 2,则二叉树的枝数为 2(n0-1), 其中 n0 是度为 0 的结点的个数。
中国农业大学
2011 年攻读硕士学位研究生入学考试模拟试题(一)
科目代码: 821 科目名称: 数据结构
考生注意:所有大题务必书写在考场提供的答题纸上,写在本试题单上的答题一 律无效(本题单不参与阅卷) 。 一、选择题 1. 算法的时间复杂度取决于( ) A.问题的规模 B. 待处理数据的初态 C. A 和 B 2.下面关于线性表的叙述中,错误的是哪一个? A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 )中应用。 3. 栈在( A. 递归调用 B. 子程序调用 C. 表达式求值 D. A,B,C 4.设有两个串 p 和 q,其中 q 是 p 的子串,求 q 在 p 中首次出现的位置的算法 称为( ) A.求子串 B.联接 C.匹配 D.求串长 5. 数组 A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地 址为 1000 的内存单元中,则元素 A[5,5]的地址是( )。 A. 1175 B. 1180 C. 1205 D. 1210 6 在一棵高度为 k 的满二叉树中,结点总数为( ) k-1 k k A.2 B.2 C.2 -1 D.log2k+1 ) 7.哪一种图的邻接矩阵是对称矩阵?( A.有向图 B.无向图 C.AOV 网 D.AOE 网 8.动态存储管理系统中,通常可有( )种不同的分配策略。 A. 1 B. 2 C. 3 D. 4 E. 5 9 如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用 ( )查找法。 A. 分快查找 B. 顺序查找 C. 折半查找 D. 基于属性 10 组记录的关键码为(46,79,56,38,40,84) ,则利用快速排序的方法,以 第一个记录为基准得到的一次划分结果为( ) 。 A.(38,40,46,56,79,84) B. (40,38,46,79,56,84) C.(40,38,46,56,79,84) D. (40,38,46,84,56,79) 二、判断题
数据结构课后习题(第6章)
【课后习题】第6章树和二叉树网络工程2010级()班学号:姓名:一、填空题(每空1分,共16分)1.从逻辑结构看,树是典型的。
2.设一棵完全二叉树具有999个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个度为1的结点。
3.由n个权值构成的哈夫曼树共有个结点。
4.在线索化二叉树中,T所指结点没有左子树的充要条件是。
5.在非空树上,_____没有直接前趋。
6.深度为k的二叉树最多有结点,最少有个结点。
7.若按层次顺序将一棵有n个结点的完全二叉树的所有结点从1到n编号,那么当i为且小于n时,结点i的右兄弟是结点,否则结点i没有右兄弟。
8.N个结点的二叉树采用二叉链表存放,共有空链域个数为。
9.一棵深度为7的满二叉树有___ ___个非终端结点。
10.将一棵树转换为二叉树表示后,该二叉树的根结点没有。
11.采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的遍历结果是一样的。
12.一棵Huffman树是带权路径长度最短的二叉树,权值的外结点离根较远。
二、判断题(如果正确,在对应位置打“√”,否则打“⨯”。
每题0.5分,共5分)1.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i-1个结点。
2.二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该二叉树的根结点是那一个,则可以确定这棵二叉树。
3.一棵树中的叶子结点数一定等于与其对应的二叉树中的叶子结点数。
4.度≤2的树就是二叉树。
5.一棵Huffman树是带权路径长度最短的二叉树,权值较大的外结点离根较远。
6.采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的前序遍历结果是一样的。
7.不存在有偶数个结点的满二叉树。
8.满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树。
9.已知二叉树的前序遍历顺序和中序遍历顺序,可以惟一确定一棵二叉树;10.已知二叉树的前序遍历顺序和后序遍历顺序,不能惟一确定一棵二叉树;三、单项选择(请将正确答案的代号填写在下表对应题号下面。
2018中国农业大学821考研数据结构真题
中国农业大学2018 年821 数据结构真题回忆版一、选择题(20分)1. 下面程序段的时间复杂度为()for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s= s+t;}A O(n)B O(n^2)C O(n^3)D O(n^4)2.有一个二维数组A [ m ][ n ],假设A [0][0]存放位置在644 (10),A A [2][2]存放位置在676 (10),每个元素占一个空间,问A [3][3] (10)存放在什么位置?脚注(10) 表示用10 进制表示。
A.688 B.678 C.692 D.6963. 对关键码序列{7,34,55,25,64,46,20,10}进行Hash 存储时,如果选用H(key)=key%9 作为Hash 函数,则Hash地址为1 的元素有()个。
A. 1B. 2C. 3D. 44.一个栈的入栈序列是A,B,C,D,E, 则栈的不可能输出序列是()。
A.EDCBA B.DECBA C.DCEAB D.ABCDE5. 当n=5 时,下列函数的返回值是( )。
int foo(int n){if(n<2) return n;return foo(n-1)+foo(n-2);}A. 5B. 7C. 8D. 16.已知一颗二叉树,如果先序遍历顺序是ADCEFGHB,中序遍历顺序是CDFEGHAB,则后序遍历顺序是()。
A.CFHGEBDA B.CDFEGHBA C.FGHCDBA D.CFHGEDBA7.下列()数据结构,同时具有较高的查找,插入和删除性能。
A.有序数组B.有序链表C.AVL 树D.Hash 表8.下列排序算法中,()在任何情况下时间复杂度不会超过n*1og2n表示用10 进制表示。
A.快速排序 B. 堆排序 C. 简单选择排序 D. 冒泡排序9. 初始序列为{1,8,6,2,5,4,7,3} 的一组采用堆排序,当构建小根堆完毕时,堆所对应的二叉树中序遍历序列为()A.8 3 2 5 1 6 4 7 B. 3 2 8 5 1 4 6 7C. 3 8 2 5 1 6 7 4D. 8 2 3 5 1 4 7 610..某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码()A a(0 0 0) b(0 0 1) h(01) i(10) o(00)B a(0 0 0 0) b(0001) h(001) o(01) i(1)C a(0 1 1) b(0 1 0) h(00) i(01) o(11)D a(0 0 0 0) b(0 0 0 1) h(001) o(0001) i(1)二、填空(20分)1. 假定一个线性表为(12,23,74,55,63,40,82,36),若按key%3 条件进行划分,使得同一余数的元素成为一个子表,则得到的三个子表分别是__________·__________和__________。
(完整版) 《数据结构》教材课后习题+答案
第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
数据结构课后习题答案第六章
第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。
表示该遗传关系最适合的数据结构为( )。
A.向量B.树C图 D.二叉树2.树最合适用来表示( )。
A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。
A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。
A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。
A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。
A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。
A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。
A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。
10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.411.在一棵具有35个结点的完全二叉树中,该树的深度为( )。
中国农业大学_821数据结构_《数据结构》实验笔记(6)
实验6 图及其应用课程实验共安排8个难度各易的实验,训练重点在于掌握基本的数据结构,而不强调面面俱到。
通过实验,掌握抽象数据类型的概念和基本数据结构,掌握各种数据结构内在的逻辑关系,各种数据结构在计算机中的存储表示,基于各种数据结构上的基本运算、算法实现及算法分析。
●实验目的(1) 掌握图的基本存储方法。
(2) 掌握有关图的操作算法并用高级语言实现。
(3) 熟悉图的各种存储结构及其构造算法,了解实际问题的求解效率与采用何种存储结构以及算法有着密切的联系。
●实验内容(1) 软件专业的学生要学习一系列课程,其中有些课程必须在其先修课程完成之后才能学习,具体关系见下表。
课程编号课程名称先决条件C1 程序设计基础无C2离散数学C1C3数据结构C1, C2C4汇编语言C1C5语言的设计和分析C3, C4C6计算机原理C11C7编译原理C3, C5C8操作系统C3, C6C9高等数学无C10线性代数C9C11普通物理C9C12数值分析C1, C9, C10假设每门课程的学习时间为一学期,那么为该专业的学生设计教学计划,使他们能在最短的时间内修完这些课程。
(2) 以无向网表示n个城市之间通信网络的建设计划,顶点表示城市,边上的权表示该线路的造价;设计一个方案,使这个通信网的总造价最低。
(3) 假设以一个带权有向图表示某以区域的公交线路图,图种顶点代表一些区域种的重要场所,弧代表已有的公交线路,弧上的权表示线路上的票价(或搭乘所需要的时间)。
设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域种的某一场所达到另一场所。
●实验要求(1) 认真分析题目。
(2) 进行算法设计。
(3) 编写程序代码(4) 上机调试程序。
(5) 保存和打印出程序的运行结果,并结合程序进行分析。
数据结构课后习题及解析六
第六章习题1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。
3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。
4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。
5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?6.给出满足下列条件的所有二叉树:①前序和后序相同②中序和后序相同③前序和后序相同7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child 域有多少个?8.画出与下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHJ;树的后根次序访问序列为DIAEKFCJHBG。
9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。
10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因.11. 画出和下列树对应的二叉树:12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。
13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。
在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。
15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。
16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。
17.对以孩子-兄弟链表表示的树编写计算树的深度的算法。
18.已知二叉树按照二叉链表方式存储,利用栈的基本操作写出后序遍历非递归的算法。
中国农业大学硕士研究生入学考试初试模拟题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)作为其存储结构。请写一算法,求该二叉 树中叶结点的个数。
数据结构C语言第三版习题6参考答案
习题6参考答案6.1 选择题(1)C (2)A (3)B(4)C(5)B(6)B(7)A(8)A(9)B(10)A (11)A(12)A(13)B(14)D(15)B(16)A(17)C6.2 填空(1) 4(2) 1对多 ; 多对多(3) n-1 ; n(4) 0_(5)有向图(6) 1(7)两倍(8)两倍(9)___第i个链表中边表结点数___(10)___第i个链表中边表结点数___(11)深度优先遍历;广度优先遍历(12)O(n2)(13)___无回路6.3(1)邻接矩阵:(2)邻接链表:(3)每个顶点的度:顶点度V1 3V2 3V3 2V4 3V5 36.4(1)邻接链表:(2)逆邻接链表:(3)顶点入度出度V1 3 0V2 2 2V3 1 2V4 1 3V5 2 1V6 2 36.5(1)深度优先查找遍历序列:V1 V2 V3 V4 V5; V1 V3 V5 V4 V2; V1 V4 V3 V5 V2 (1)广度优先查找遍历序列:V1 V2 V3 V4 V5; V1 V3 V2 V4 V5; V1 V4 V3 V2 V56.6有两个连通分量:6.7最小生成树的示意图如下:6.8拓扑排序结果: V3→ V1 → V4 → V5 → V2 → V66.9(1)建立无向图邻接矩阵算法: 提示:参见算法6.1因为无向图的邻接矩阵是对称的,所以有for (k=0; k<G ->e; k++) /*输入e 条边,建立无向图邻接矩阵*/ { scanf("\n%d,%d",&i,&j);G ->edges[i][j]= G ->edges[j][i]=1; }(2)建立无向网邻接矩阵算法: 提示:参见算法6.1 。
初始化邻接矩阵:#define INFINITY 32768 /* 表示极大值*/for(i=0;i<G->n;i++)for(j=0;j<G->n;j++) G->edges[i][j]= INFINITY;输入边的信息:不仅要输入边邻接的两个顶点序号,还要输入边上的权值for (k=0; k<G ->e; k++) /*输入e条边,建立无向网邻接矩阵*/{ scanf("\n%d,%d,%d",&i,&j,&cost); /*设权值为int型*/G ->edges[i][j]= G ->edges[j][i]=cost;/*对称矩阵*/}(3)建立有向图邻接矩阵算法:提示:参见算法6.1。
中国农业大学_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数据结构_《数据结构》期末题(2套)
(1)算法至少有一个输入和一个输出
(2)算法至少有一个输出但是可以没有输入 (3)算法可以永远运行下去 A. (1) ( 3) 5. 对顺序存储的线性表(a1,a2,…,an)进行插入操作的时间复杂度是 A.O(n) B. O(n-i) 。 B.插入和删除时不需要移动 C. (n/2) C 。 B. (2) C. (3) D. (2)和
10. 将新元素插入到链式队列中时,新元素只能插入到 A. 链头 B. 链尾 C. 链中
D. 第 i 个位置,i 大于等于 1,大于等于表长加 1 11. 设栈 S 和队列 Q 的初始状态为空,元素 e1、e2、e3、e4、e5 和 e6 依次通
过栈 S,一个元素出栈后即进入队列 Q,若 6 个元素出队的顺序是 e2、e4、 e3、e6、e5、和 e1,则栈 S 容量至少应该是 A. 6 12.下面 D B. 4 C. 3 C 。 D. 2
a b c d e f
a 0 1 0 0 1 0
b c d e f 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0
(1). 画出该图的图形; (2). 根据邻接矩阵从顶点 a 出发进行广度优先遍历,画出相应的广度优先遍历树。 (15 分) 三、已知一个散列表如下图所示: 0 59 1 2 61 3 4 5 6 7 33 8 9 48 10 20 11 12 35
是‘abcd321ABCD’的子串。 B. 321ab C. ‘ abc ABC ’ D.
A. abcd ‘21AB’
13.假设 8 行 10 列的二维数组 A[1…8,1…10]分别以行序为主序和以列序为主 序顺序存储时,其首地址相同,那么以行序为主序时元素 a[3,5]的地址与以 列序为主序时 C 元素相同。 A. a[7,3] 都不对 14. 数组 A[0…5,0…6]的每个元素占 5 个字节,将其按列优先次序存储在起始 地址为 1000 的内存单元中,则元素 A[5,5]的地址为 A. 1175 B. 1180 C. 1205 B 。 C. (a,(b,(d))) D. A 。 D.1210 B. a[8,3] C. a[1,4] D. ABC
2018中国农业大学821考研数据结构真题
中国农业大学2018 年821 数据结构真题回忆版一、选择题( 20 分)1.下面程序段的时间复杂度为( )for (i=1,s=0;i<=n;i++ ){t=1;for(j=1;j<=i;j++) t=t*j;s= s+t;}A O(n)B O(n^2)C O(n^3)D O(n^4)2.有一个二维数组 A [ m ][ n ] ,假设 A [0][0]存放位置在644 (10) , A A [2][2] 存放位置在676 (10) ,每个元素占一个空间,问A [3][3] (10) 存放在什么位置?脚注(10) 表示用10 进制表示。
A.688 B.678 C.692 D.6963.对关键码序列{7,34,55,25,64,46,20,10}进行Hash 存储时,如果选用H(key)=key%9 作为Hash 函数,则Hash地址为 1 的元素有( )个。
A. 1B. 2C. 3D. 44.一个栈的入栈序列是A,B,C,D,E, 则栈的不可能输出序列是( )。
A.EDCBA B.DECBA C.DCEAB D.ABCDE5.当n=5 时,下列函数的返回值是( )。
intfoo(int n){if(n<2) return n;return foo(n-1)+foo(n-2);}A. 5B. 7C. 8D. 16.已知一颗二叉树,如果先序遍历顺序是ADCEFGHB,中序遍历顺序是CDFEGHAB则, 后序遍历顺序是() 。
A .CFHGEBDA B .CDFEGHBAC .FGHCDBA D.CFHGEDBA7.下列()数据结构,同时具有较高的查找,插入和删除性能。
A.有序数组B.有序链表C.AVL 树D.Hash 表8.下列排序算法中,()在任何情况下时间复杂度不会超过n*1og 2n 表示用10 进制表示。
A.快速排序 B. 堆排序 C. 简单选择排序 D. 冒泡排序9.初始序列为{1,8,6,2,5,4,7,3} 的一组采用堆排序,当构建小根堆完毕时,堆所对应的二叉树中序遍历序列为()A.8 3 2 5 1 6 4 7 B. 3 2 8 5 1 4 6 7C. 3 8 2 5 1 6 7 4D. 8 2 3 5 1 4 7 610..某段文本中各个字母出现的频率分别是 {a:4,b:3, o:12,h:7,i:10},使用哈夫曼编码, 则哪种是可能的编 码()A a(0 0 0) b(0 0 1) h(01) i(10) o(00)B a(0 0 0 0) b(0001) h(001) o(01) i(1)C a(0 1 1) b(0 1 0) h(00) i(01) o(11)D a(0 0 0 0) b(0 0 0 1) h(001) o(0001) i(1)二、填空( 20 分)1. 假定一个线性表为 (12,23,74,55,63,40,82,36),若按 key%3 条件进行划分,使得同一余数的元素成为一个 子表,则得到的三个子表分别是 _______ · 和 ______ 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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 ,那么该树中含有多少个叶子结点?有多少个非终端结点?
A
B
E
C
D
F
G
H
J
I
4. 任意一棵有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)所示的二叉树,它们的经过先序、中序和后序遍历后得到的结点序列分别是什么?画出它们的先序线索二叉树和后序线索二叉树。
(a)
(b)
A
B
C
D
E
F
G
H
I
A
B
C
E
F
I
J
D
G
H
图6-2 二叉树
14. 在线索化二叉树中,t 所指结点没有左子树的充要条件是什么? 15. 画出图6-2(a)和(b)中所示的二叉树的二叉链表和顺序存储结构示意图。
二、填空题
1. 树和二叉树的三个主要差别是 、 和 。
2. 一棵深度为k 的完全二叉树至少有 个结点,至多有 个结点;如果按照自上而下、自左到右的次序给结点编号(从1开始),则编号最小的叶子结点的编号是 。
3. 一棵二叉树的结点数据采用顺序存储结构存储于数组t 中,如图6-3所示,则该二叉树的链表表示形式为 。
图6-3 一棵二叉树的顺序存储数组 t
4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为n 2,则有n 0 = 。
5. 结点最少的树为 ,结点最的少的二叉树为 。
6. 如图6-4所示的二叉树,其中序遍历序列为 ,其前序遍历序列为 ,其后序遍历序列为 ;该二叉树的前序线索二叉树为 ,该二叉树的后序线索二叉树为 ;该二叉树对应的森林为 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 A
B
C
E
F
I
J
D
G
H
图6-4 二叉树
7. 将图6-5所示的树转换成二叉树,其二叉树表示为 。
图6-5 树
8. 将图6-6所示的二叉树转换为树,其树表示为 。
A
B
E
C
D
F
G
H
J
I
K
M
L
A
B
D
E
F
G
I
J
H
图6-6 二叉树
9. 将图6-7所示的森林转换为二叉树,其二叉树表示为 。
图6-7 森林
10. 将图6-8所示的二叉树转换为森林,其森林表示为 。
图6-8 二叉树
11. 前序序列和中序序列相同的二叉树有 ,中序序列和后序序列相同的二叉树
A
B
E
C
D
F
H
G
J
I
K
M
L
N
O
R
P
S
T
A
B
C
E
F
I
J
D
G
H
有,前序序列和后序序列相同的二叉树有。
12. 一个k层满m叉树具有性质:第k层上的结点都是叶子结点,其余各层上的每个结点都有m个非空子结点。
如果对树中的结点逐层编号(层号由小到大,同一层从左到右),编码次序是1,2,3,……,那么各层上结点的数目是,编号为n的结点的双亲结点的编号是,编号为n的结点的第i个孩子的编号是,编号为n的结点的右兄弟的编号是。
13. 假设二叉树中所有的非叶子结点都有左子树和右子树,那么有n个叶子结点的二叉树中共有个结点。
14. 假定用于通信的电文由8个字母A、B、C、D、E、F、G、H 组成,各字母在电文中出现的频率为5%、25%、4%、7%、9%、12%、30%、8%,以频率作为结点的权值所构造的Huffman树为,这8个字母Huffman编码为,带权路径长度为。
三、算法题
1. 编写算法。
一棵具有n个结点的完全二叉树,以一维数组作为存储结构:
(1) 该完全二叉树进行先序遍历;
(2) 印出编号为i的结点的双亲和所有孩子。
2. 编写算法。
假设二叉树T中至多有一个结点的数据域值为x,要求使原二叉树T分成两棵二叉树,一棵是以原二叉树的根结点为根,但是拆去以结点x为根的子树的二叉树;另一棵是以结点x为根,被拆掉的二叉树。
例如,x = E,二叉树的变化情况如图6-9示。
3. 编写算法。
二叉树T采用二叉链表存储结构,求一棵给定二叉树的所有结点数。
4. 编写算法。
二叉树T采用二叉链表存储结构,求一棵给定二叉树的单孩子结点数。
5. 编写算法。
二叉树T采用二叉链表存储结构,求一棵给定二叉树的双孩子结点数。
6. 编写算法。
判断任意给定的二叉树T是否为满二叉树的递归和非递归算法。
7. 编写算法。
判断两棵二叉树是否相似。
T1和T2相似是指T1和T2为空树;或T1和T2根结点是相似的,且T1的左子树和T2左子树是相似的,且T1的右子树和T2右子树是相似的。
(a) 原二叉树T
(b) 从结点E 开始拆分后的二叉树
图6-9 x = E 时二叉树的变化情况
8. 编写算法。
已知一棵二叉树的先序序列和中序序列,则可以惟一地确定一棵二叉树,求由先序序列和中序序列构造该二叉树。
9. 编写算法。
假设二叉树采用链式存储结构,求该二叉树中所有叶子结点的最大和最小枝长。
10. 设计一个二叉树,用它可以表示父子、夫妻和兄弟三种关系,并编写一个查找任意父亲结点的所有儿子的算法。
A
B
C
D
E
F
H
I
G
K
J
E
H
I
K
A
B
C
D
F
G
J。