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

合集下载

中国农业大学_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)所示的二叉树,它们的经过先序、中序和后序遍历后得到的结点序列分别是什么?画出它们的先序线索二叉树和后序线索二叉树。

农大数据结构答案

农大数据结构答案

农大数据结构答案(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分别表示两个集合,其元素递增排列。

中国农业大学_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. 在顺序表中插入或删除一个数据元素,需要平均移动个元素,具体移动的元素个数与有关。

数据结构(第二版)习题库章节练习题1-9章全

数据结构(第二版)习题库章节练习题1-9章全

数据结构(第二版)习题库章节练习题1-9章全数据结构(第二版)习题库章节练习题1-9章全第一章:引论引论部分为数据结构的开篇,主要介绍了数据结构的基本概念和分类。

在这一章中,我们学习了数据结构的定义、作用以及与算法的关系。

接下来,将为你详细介绍第一章的习题内容。

1. 习题1-1题目:请简述数据结构的定义和作用。

要求:通过一段简洁清晰的语言来回答问题,并给出你的理解。

答案:数据结构是计算机中存储、组织和管理数据的方式。

它旨在将数据以特定的方式进行排列,以便高效地进行存储和检索。

数据结构作为计算机科学的基础,为我们解决实际问题提供了有效的工具和方法。

2. 习题1-2题目:你认为数据结构与算法之间的关系是什么?要求:结合实际案例,详细解释数据结构与算法之间的相互依赖关系。

答案:数据结构和算法是密不可分的,它们之间存在着相互依赖的关系。

数据结构提供了算法操作的基础,而算法则对数据结构进行操作和处理。

例如,在搜索算法中,我们需要合适的数据结构来存储和组织数据,以便能够高效地进行搜索操作。

而无论是数组、链表还是树,都需要通过算法来进行增删改查等操作。

第二章:算法分析算法分析是数据结构中的重要概念,它涉及到算法的运行时间和空间效率。

在这一章中,我们将学习算法分析的基本方法和常用技巧,并通过习题来巩固所学知识。

3. 习题2-1题目:请解释渐进记号中的"O"表示什么意思。

要求:简明扼要地回答问题,并辅以例子说明。

答案:在算法分析中,"O"表示渐进上界。

它描述了算法在最坏情况下的运行时间复杂度。

例如,如果一个算法的时间复杂度为O(n),那么说明该算法的运行时间与输入规模n成正比。

即使输入规模变大,算法的运行时间也不会超过n的某个常数倍。

4. 习题2-2题目:请说明算法的平均情况分析与最坏情况分析有何区别?要求:用简洁的语言说明两种分析方法的不同之处,并给出具体的示例。

答案:算法的平均情况分析和最坏情况分析的区别在于对输入数据的预先假设。

中国农业大学_821数据结构_《数据结构》模拟题及答案(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) 二、判断题

数据结构第5章作业参考答案

数据结构第5章作业参考答案

第5章树和二叉树一、单项选择题1.以下说法错误的是(B )。

A. 存在这样的二叉树,对其采用任何次序的遍历其结点访问序列均相同B. 二叉树是树的特殊情形C. 满二叉树中所有叶结点都在同一层上D. 在二叉树只有一棵子树的情况下,也要指出是左子树还是右子树2.树最适合用来表示( C)。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据3.下列叙述正确的是(C )。

A. 二叉树是度为2的有序树B. 完全二叉树一定存在度为1的结点C. 深度为k的二叉树中结点总数≤2k-1D. 对于有n个结点的二叉树,其高度为⎣log2n⎦+14.按照二叉树的定义,具有三个节点的二叉树有( C )种。

A.3B.4C.5D.65.下列叙述中正确的是(C )。

A. 二叉树是度为2的有序树B. 二叉树中的结点只有一个孩子时无左右之分C. 二叉树中每个结点最多只有两棵子树,并且有左右之分D. 二叉树若存在两个结点,则必有一个为根,另一个为左孩子6.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C )。

A.N0=N1+1 B.N=Nl+N2C.N=N2+1 D.N=2N1+17.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( B )。

A. 2i+1B.2iC.i/2D.2i-18.有100个结点的完全二叉树由根开始从上到下从左到右对结点进行编号,根结点的编号为1,编号为46的结点的右孩子的编号为( C )A.50 B.92 C.93 D.869.若一棵有n个结点的树,则该树中的度之和为(C )。

A. n+1B. nC. n-1D. 不确定10.已知完全二叉树有90个结点,则整个二叉树有( B )个度为1的结点。

A 0B 1C 2D 不确定11.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(C )。

2018中国农业大学821考研数据结构真题

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 条件进行划分,使得同一余数的元素成为一个子表,则得到的三个子表分别是__________·__________和__________。

数据结构第五章参考答案

数据结构第五章参考答案

习题51.填空题(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。

答案:129(2)3个结点可构成(___________)棵不同形态的二叉树。

答案:5(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。

答案:31(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

答案:2 n-1 1 n 1 n-1(5)深度为k的二叉树,至多有(___________)个结点。

答案:2k-1(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。

答案:2n-1(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。

答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。

答案:24(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。

答案:384(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。

答案:68(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。

答案:128(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。

答案:ABCDEF(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。

2018年中国农业大学821数据结构考试大纲

2018年中国农业大学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)哈希表及其查找●哈希函数●处理冲突方法●哈希查找(5)各种查找算法的分析8.排序(1)排序的概念●排序方法稳定性、排序分类●排序算法效率的评判标准(2)插入排序●简单插入排序●希尔排序(3)交换排序●冒泡排序●快速排序(4)选择排序●简单选择排序●堆排序(5)归并排序●二路归并排序●分治归并排序(6)各种排序算法的比较四、题型举例1.选择题在单链表中成功查找一个元素的等概率下的平均搜索长度是。

中国农业大学_821数据结构_《数据结构》笔记(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数据结构_《数据结构》实验笔记(5)

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

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

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

●实验目的
(1) 进一步掌握指针变量、动态变量的含义。

(2) 掌握二叉树的结构特性,以及各种存储结构的特点及适用范围。

(3) 掌握用指针类型描述、访问和处理二叉树的运算。

●实验内容
(1) 试编写交换以二叉链表作存储结构的二叉树中所有结点的左、右子树的算法。

(2) 已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。

(3) 已知二叉排序树以二叉链表作存储结构,试编写按从大到小的顺序输出二叉排序树的各结点的算法。

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

(2) 进行算法设计。

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

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

中国农业大学硕士研究生入学考试初试模拟题821数据结构(三套)

中国农业大学硕士研究生入学考试初试模拟题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)

中国农业大学_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数据结构_《数据结构》期末题(2套)

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

三、算法题
1. 编写一个函数,将A[0..n-1]中所有奇数移到偶数之前。要求不另增加存储空间,且
时间复杂度为O(n)。 2. 编写一个函数,设置mn(m=2,n=3)矩阵的元素后,统计这个矩阵中具有下列特 征的元素个数并输出它们的坐标和数值:它们既是所在行中的最小值又是所在列中的最小 值,或者它们既是所在行中的最大值又是所在列中的最大值。 3. 编写一个函数,在nn(n≥3)的稀疏矩阵A中,只有下标满足1<i<n和n-i≤j≤n-i+2 的元素A[i][j]不等于0 ,若这些非 0 元素按行优先的顺序存储在一维数组 B 中,试通过 B 求 A[i][j]之值。也就是说,在存在B的情况下,已知i、j求A[i][j]。 4. 编写一个函数,假设稀疏矩阵A和B(分别为)mn和nk采用三元组表示,试计算 C=A*B,要求C也是采用稀疏矩阵的三元组表示。 5. 编写一个函数,计算一个广义表原子结点个数。例如一个广义表为 (a, (b, c), ((e))), 其原子结点的个数为4。 6. 编写一个函数,计算一个广义表的所有原子结点数据域(数据域为整数型)之和。 例如一个广义表为 ((3, 4), 5, (( 6, 3 ))),其所有结点数据域之和为21。 7. 编写一个函数,将两个广义表合并成一个广义表,合并是指元素的合并。例如两个 广义表 ((a, b), (c)) 与 (a, (e, f)) 合并后的结果是 ((a, b), (c), a, (e, f))。 8. 编写一个函数,删除广义表中所有值为x的元素。例如删除广义表 ((a, b), a, (d, a)) 中所有a的结果空题
1. 已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一 个元素的起始地址始LOC(A[0][0]),则A[i][j]的地址是 。
2. 已知二维数组 A[10][20] 采用列序为主方式存储,每个元素占 1 个存储单元,并且 A[0][0]的存储地址是200,则A[6][12]的地址是 。
(5) GetHead【GetTail【( a, b, c)】 】的运算结果是
(6) GetTail【GetHead【( ( a, b ), ( c, d ) )】 】的运算结果是 (7) GetHead【GetHead【( ( a, b ), ( c, d ) )】 】的运算结果是 (8) GetTail【GetTail【( a, ( c, d ) )】 】的运算结果是
3. 有一个10阶对称矩阵A,采用压缩存储方式(以行序为主序存储,且 A[0][0]=1) , 则A[8][5]是 。 ,表尾是 。 ,表尾是 ,深度是 ,深度是 。 。 。
4. 广义表 ( ( (a) ) ) 的表头是
5. 广义表 ( (a), ( (b), c ), ( ( (d) ) ) ) 的表头是 6. 广义表 ( (a), ( (b), c ), ( ( (d) ) ) ) 的长度是 7. 广义表 ( a, ( a, b ), d, e, ( ( i, j ), k ) ) 的长度是
第5章 多维数组与广义表
一、回答题
1. 常对数组进行的两种基本操作是什么? 2. 二维数组M的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范 围从0到4,列下标j的范围从0到5,那么M按行存储时元素M[3][5]的起始地址与M按列存储 时的什么元素的起始地址相同? 3. 稀疏矩阵一般的压缩存储方法有哪两种? 4. 如果采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换, 就完成了对该矩阵的转置运算,这种观点是否正确? 5. 设三角矩阵R采用压缩存储,已知R0, 0的地址为1,那么R3, 2的存储地址是多少?
31 43 R 58 0
0 0 36 14
0 0 75 69
0 0 0 91
6. 将1题中的矩阵R表示成十字链表存储结构。 7. 已知广义表LS = ( a, ( b, c, d ), e ),那么取出原子b的运算是什么? 8. 一个广义表的表头总是一个广义表,这个断言是否正确? 9. 一个广义表的表尾总是一个广义表,这个断言是否正确?
8. 设GetHead【p】为求广义表p的表头函数,GetTail【p】为求广义表 p 的表尾函数, 其中【】是函数符号,给出下列广义表的运算结果。 (1) GetHead【( a, b, c)】的运算结果是 (2) GetTail【( a, b, c)】的运算结果是 (3) GetHead【( (a), (b) )】的运算结果是 (4) GetTail【( (a), (b) )】的运算结果是 。 。 。 。 。 。 。 。
相关文档
最新文档