考研资料数据结构试卷A1-答案
数据结构考研真题和答案

数据结构考研真题和答案数据结构是计算机科学中的重要基础课程,对于计算机专业的学生而言,掌握好数据结构非常关键。
考研阶段,数据结构也是一个必考科目。
本文将介绍一些常见的数据结构考研真题以及详细的答案解析,希望能帮助同学们更好地备考。
1. 简述线性表的定义,举例说明线性表的应用场景。
线性表是数据结构中最基本的一种结构,它是由相同数据类型的有限个数据元素组成的序列。
线性表的特点是存储结构唯一,数据元素之间是一对一的关系。
在实际应用中,线性表常用来表示一组某种类型的数据集合,例如存储学生的学号信息、存储职工的工号信息等。
2. 解释栈的特点及其应用场景。
栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作,表的另一端称为栈顶。
栈的插入操作称为入栈,删除操作称为出栈。
栈的特点是后进先出(LIFO),即最后插入的元素最先被删除。
栈在实际应用中有很多场景,例如函数调用栈、表达式求值、撤销操作等。
3. 什么是队列?请给出队列的一个实际应用案例。
队列也是一种特殊的线性表,它的特点是只允许在表的一端进行插入操作,而在另一端进行删除操作。
队列的插入操作称为入队,删除操作称为出队。
队列的特点是先进先出(FIFO),即最先插入的元素最先被删除。
队列在实际应用中有很多场景,例如排队、任务调度、消息队列等。
4. 什么是树结构?请简要介绍树结构的一些应用。
树是一种非线性的数据结构,它由n(n>=1)个有限节点组成一个具有层次关系的集合。
树的特点是一个节点可以有多个子节点,但是只能有一个父节点,除根节点外,每个节点可以有多个子节点。
树结构在实际应用中广泛存在,例如文件系统、组织结构、网络拓扑等。
5. 解释二叉树的定义,并给出一种常见的二叉树结构。
二叉树是一种特殊的树结构,它的每个节点最多有两个子节点,分别称为左子节点和右子节点。
二叉树的定义为一个有限的节点集合,该集合可以为空,如果非空则必须满足:(1)有且仅有一个称为根的节点;(2)该节点的左子树和右子树也是二叉树。
数据结构考研真题及其答案

一、选择题1. 算法的计算量的大小称为计算的(B )。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于(C )【中科院计算所1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(C),它必须具备(B)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列D. 调度方法(2) A.可执行性、可移植性、可扩充性B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是(B )。
【中山大学1998 二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.5. 下面关于算法说法错误的是( D )【南京理工大学2000 一、1(分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是( C )【南京理工大学2000 一、2 (分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低4 A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。
【武汉交通科技大学1996 一、4(2分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是( D )。
【北方交通大学2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D.栈9.以下数据结构中,哪一个是线性结构(D )【北方交通大学2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关( A )【北方交通大学2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为(C )【北京工商大学2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A.O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是( D )A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型( D )【中山大学1999 一、3(1分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,( A )是非线性数据结构【中山大学1999 一、4】A.树B.字符串C.队D.栈15. 下列数据中,(C)是非线性数据结构。
数据结构考研真题及其答案

一、选择题1. 算法的计算量的大小称为计算的( B )。
【北京邮电大学2000 二、3 (20/8 分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于( C )【中科院计算所1998 二、1 (2 分)】A.问题的规模 B. 待处理数据的初态 C. A 和B3. 计算机算法指的是(C),它必须具备(B)这三个特性。
(1) A .计算方法 B. 排序方法 C. 解决问题的步骤序列D. 调度方法(2) A .可执行性、可移植性、可扩充性 B . 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学1999 一、1(2 分)【武汉交通科技大学1996 一、1(4 分)】4.一个算法应该是( B )。
【中山大学1998 二、1(2 分)】A .程序B .问题求解步骤的描述C .要满足五个基本特性D.A 和C.5. 下面关于算法说法错误的是( D )【南京理工大学2000 一、1(1.5 分)】A.算法最终必须由计算机程序实现B. 为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是( C )【南京理工大学2000 一、2 (1.5 分)】(1 )算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n 下,复杂度O(n) 的算法在时间上总是优于复杂度nO(2 )的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低 4A .(1) B.(1),(2) C. (1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。
【武汉交通科技大学1996 一、4(2 分)】A.动态结构、静态结构 B .顺序结构、链式结构C.线性结构、非线性结构 D .初等结构、构造型结构8.以下与数据的存储结构无关的术语是( D )【。
数据结构的考研题库及答案

数据结构的考研题库及答案数据结构是计算机科学中非常重要的一门学科,它研究的是如何组织和管理数据以及数据之间的关系。
对于考研学生来说,数据结构是一个必考的科目,因此熟悉考研题库及答案对于备考非常重要。
一、数据结构的考研题库数据结构的考研题库通常包含选择题和填空题两种类型。
选择题是通过给定的选项选择正确答案,而填空题则需要考生填写正确的答案。
在选择题中,常见的考点包括线性表、栈和队列、树和二叉树、图等。
例如,考生可能会遇到如下题目:下列关于栈的说法中,错误的是(A)栈是一种先进后出的数据结构(B)栈的插入操作称为入栈(C)栈的删除操作称为出栈(D)栈的插入和删除操作都在栈顶进行。
正确答案是(A)栈是一种先进后出的数据结构。
填空题则更加注重对知识点的理解和应用。
例如,考生可能会遇到如下题目:设有一个长度为n的线性表L,其中元素按非递增顺序排列。
设计一个算法,删除线性表中所有值相同的元素,要求时间复杂度为O(n)。
正确答案是:从前向后扫描线性表,用一个变量count记录不同元素的个数,然后将不同的元素依次放到线性表的前count个位置。
二、数据结构的考研答案对于考生来说,除了了解考研题库外,掌握正确的答案也是备考的重要一环。
在选择题中,正确答案通常是通过对题目进行分析和推理得出的。
考生需要仔细阅读题目,理解题意,然后根据自己对知识点的掌握程度选择正确答案。
在填空题中,考生需要根据题目要求,运用所学的知识点进行分析和解答。
对于一些较难的填空题,考生可以通过构造示例或者推导过程来得到答案。
除了了解答案外,考生还需要掌握解题的方法和技巧。
对于选择题,考生可以通过排除法和对选项进行比较来确定正确答案。
对于填空题,考生可以根据题目给出的条件和要求,运用相应的算法和数据结构进行求解。
三、备考数据结构的建议备考数据结构,考生需要系统地学习相关的知识点,并进行大量的练习和总结。
以下是一些建议:1. 系统学习:根据教材或者相关资料,系统地学习数据结构的基本概念、常见算法和数据结构的实现方法等。
名校BD、QH十套数据结构试题及答案

名校十套经典考研数据结构复试题数据结构试卷(一)一、单选题(每题2 分,共20分)1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进行插入运算时( ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据结构中哪一个是非线性结构?( )A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.6965.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为A. O(1)B. O(n)C. O(1og2n)D. O(n2)9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个,A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.8二、填空题(每空1分,共26分)1.通常从四个方面评价算法的质量:_________、_________、_________和_________。
数据结构考研复习题--第二章--线性表(带答案)

第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?()【北方交通大学 2001 一、4(2分)】A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()【北方交通大学 2001 一、14(2分)】A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个()的有限序列(n>0)。
【清华大学 1998 一、4(2分)】A.表元素 B.字符 C.数据元素 D.数据项 E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
【哈尔滨工业大学 2001 二、1(2分)】A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
【南开大学 2000 一、3】A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表【合肥工业大学 2000 一、1(2分)】7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用()存储方式最节省运算时间。
【北京理工大学 2000 一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关11. 线性表的表元存储方式有((1))和链接两种。
数据结构考研真题及其答案_研究生入学考试_高等教育_教育专区 数据结

数据结构考研真题及其答案_研究生入学考试_高等教育_教育专区数据结结考研真题及其答案据结构是计算机科学中重要的一门课程,它研究的是如何组织和管理数据的方式。
对于计算机专业的研究生来说,数据结构是必修课程,考研真题的复习和备考对于学生来说是非常重要的。
在本文中,我们将介绍一些数据结构考研真题及其答案,帮助学生更好地复习和备考。
第一题:给出以下数据结构中各个操作的时间复杂度:数组、链表、堆、栈、队列。
答案:数组的插入和删除操作的时间复杂度为O(n),查找操作的时间复杂度为O(1);链表的插入和删除操作的时间复杂度为O(1),查找操作的时间复杂度为O(n);堆的插入、删除和查找操作的时间复杂度都为O(logn);栈的插入、删除和查找操作的时间复杂度都为O(1);队列的插入、删除和查找操作的时间复杂度都为O(1)。
第二题:给出以下数据结构的特点:栈、队列、堆、二叉树、图。
答案:栈是一种后进先出(LIFO)的数据结构,只能在一端进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,插入操作在一端进行,删除操作在另一端进行;堆是一种完全二叉树,具有父节点的值大于等于子节点的值(大顶堆)或父节点的值小于等于子节点的值(小顶堆)的性质;二叉树是一种每个节点最多有两个子节点的树;图是由节点和连接节点的边组成的数据结构。
第三题:给定一个有序数组,要求在其中查找一个元素的位置并返回,如果找不到则返回-1,设计一个算法实现上述功能。
答案:可以使用二分查找算法来实现上述功能。
首先,将要查找的元素与有序数组的中间元素进行比较,如果相等,则返回中间元素的位置;如果要查找的元素小于中间元素,则在数组的前半部分继续进行二分查找;如果要查找的元素大于中间元素,则在数组的后半部分继续进行二分查找。
重复这个过程,直到找到要查找的元素或者确定元素不存在为止。
第四题:给出以下排序算法的时间复杂度:冒泡排序、插入排序、选择排序、快速排序、归并排序。
《数据结构》历年考研真题及解答

《数据结构》考研真题及解答目录2009 年试题 (1)填空题 (1)解答题 (2)2010 年试题 (2)填空题 (2)解答题 (4)2011 年试题 (4)填空题 (4)解答题 (5)2012 年试题 (6)填空题 (6)解答题 (7)2013 年试题 (8)填空题 (8)解答题 (9)2014 年试题 (10)填空题 (10)解答题 (11)2015 年试题 (12)填空题 (12)解答题 (14)2009 年试题填空题1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是A.栈B.队列C.树D.图2.设栈 S 和队列 Q 的初始状态均为空,元素 abcdefg 依次进入栈 S。
若每个元素出栈后立即进入队列 Q,且7 个元素出队的顺序是 bdcfeag,则栈 S 的容量至少是A.1 B.2 C.3 D.43.给定二叉树图所示。
设 N 代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。
若遍历后的结点序列为 3,1,7,5,6,2,4,则其遍历方式是A.LRN B.NRL C.RLN D.RNL4.下列二叉排序树中,满足平衡二叉树定义的是5.已知一棵完全二叉树的第 6 层(设根为第 1 层)有8 个叶结点,则完全二叉树的结点个数最多是A.39 B.52 C.111 D.1196.将森林转换为对应的二叉树,若在二叉树中,结点u 是结点v 的父结点的父结点,则在原来的森林中,u 和v 可能具有的关系是I.父子关系II.兄弟关系III.u 的父结点与v 的父结点是兄弟关系A.只有IIB.I 和IIC.I 和IIID.I、II 和III7.下列关于无向连通图特性的叙述中,正确的是I.所有顶点的度之和为偶数II.边数大于顶点个数减1 III.至少有一个顶点的度为1A.只有IB.只有IIC.I 和IID.I 和III8.下列叙述中,不符合 m 阶B 树定义要求的是A.根节点最多有m 棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接9.已知关键序列 5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字 3,调整后得到的小根堆是A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,1910.若数据元素序列 11,12,13,7,8,9,23,4,5 是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是A.起泡排序 B.插入排序 C.选择排序 D.二路归并排序解答题41.(10 分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考试科目名称 数据结构 (A1卷)考试方式:闭卷 考试日期 年 月 日 教师 系(专业) 计算机科学与技术系 年级 二 班级 学号 姓名 成绩 题号 一 二 三 四 五 六 七 八 九 十 分数1、填空题。
(每小题2分,本题满分20分)(1) C++语言中,数组是按行优先顺序存储的,假设定义了一个二维数组A[20][30],每个元素占两个字节,其起始地址为2140,则二维数组A 的最后一个数据元素的地址为 2140+2*(30*20-1) = 3338(3338,3339) 。
(2) 若A ,B 是两个单链表,链表长度分别为n 和m ,其元素值递增有序,将A 和B 归并成一个按元素值递增有序的单链表,并要求辅助空间为O(1),则实现该功能的算法的时间复杂度为 O(m+n) 。
(3) 快速排序的平均时间复杂度是____n*lg n___________。
(4) 假设有一个包含9个元素的最小堆,存放在数组A 中,则一定比A[3]大的元素有__2 (A[7],A[8]) ____个;一定比A[3]小的元素有__2 (A[0],A[1])____个。
(元素从第0个位置开始存放)(5) 广义表(((A)),(B,C), D, ((A), ((E,F)))) 的长度是 4 ,深度是 4 。
(6) 有10个元素的有序表,采用折半查找,需要比较4次才可找到的元素个数为____3_____。
(7)当两个栈共享一存储区时,栈利用一维数组A[n]表示,两栈顶指针为top[0]与top[1],则栈满时的判断条件为___top[0]+1=top[1]_ 或者 top[0] = top[1]+1 ___。
(8) 假设计算斐波那契数的函数Fib(long n)定义如下:long Fib(long n){ if(n<=1) return n;else return Fib(n-1)+Fib(n-2) }计算Fib(5)时的递归调用树(即指明函数调用关系的树)的高度是___4 _____。
假设叶子结点所在的高度为0。
(9) 完全二叉树按照层次次序,自顶向下,同层从左到右顺序从0开始编号时,编号为i 的结点的左子结点的编号为___2*i+1______。
(10) 假设用子女—兄弟链表方式表示森林,对应的二叉树的根结点是p ,那么森林的第三棵树的根结点在二叉树中对应的结点是: ___p->rightchild->rightchild____________。
假设二叉树的结点结构为:得分leftchild data rightchild2、选择题。
(每小题2分,本题满分20分)(1) 如果能够在只知道指针p指向链表中任一结点,不知道头指针的情况下,将结点*p从链表中删除,则这个链表结构应该是:(B,C)(多选题)A. 单链表B. 循环链表C. 双向链表D. 带头结点的单链表(2) 以下哪种矩阵压缩存储后会失去随机存取的功能?( A)A. 稀疏矩阵B. 对称矩阵C. 对角矩阵D. 上三角矩阵(3) 下面哪一方法可以判断出一个有向图是否有环(回路):( B) (选A,B也对)A. 广度优先遍历B. 拓扑排序C. 求最短路径D.求关键路径(4) n个结点的线索二叉树(没有头结点)上含有的线索数为(B)A. 2nB. n-lC. n+lD. n(5) 循环队列存储在数组A[0..m]中,则入队时队尾指针rear的操作为( D)A. rear=rear+1B. rear=(rear+1) mod (m-1)C. rear=(rear+1) mod mD. rear=(rear+1)mod(m+1)(6) 使用加权规则得到改进的Union操作WeightedUnion,其目的是:( B )A. 提高Union操作的时间性能B. 提高Find操作的时间性能C. 减少Union操作的空间存储D. 减少Find操作的空间存储(7) 使用Kruscal算法求解最小生成树时,为了设计效率较高的算法, 数据结构方面可以选择:(A)A. 利用最小堆存储边B. 利用栈存储结点C. 利用二维数组存储结点D. 利用并查集存储边(8) 已知一算术表达式的后缀形式为ABC*+DE/-,其前缀形式为:( D )A. -A+B*C/DEB. -A+B*CD/EC. -+*ABC/DED. -+A*BC/DE(9) n个关键码排序,如果选用直接插入排序方法,则元素的移动次数在最坏情况下可以达到( B )。
A. n*n/2B. n*(n-1)/2C. n/2D. (n-1)/2(10) 关键路径是AOE网络中A C。
(多选)A. 从源点到汇点的最长路径B. 从源点到汇点的最短路径C. 所有活动都是关键活动的路径D. 最短回路3、简答题。
(每小题5分,本题满分20分)(1)对如下无向图,按照Dijkstra算法,写出从顶点1 到其它各个顶点的最短路径和最短路径长度。
1 3 52 4 6结点编号 1 2 3 4 5 6 路径长度 0 117121415最短路径 1 1-2 1-3 1-3-4 1-3-5 1-3-6(2)请画出在如下图所示的5阶B 树中插入一个关键码360后得到的B 树。
100 200 300 40020 40 150 180 240 260 310 320 350 370 420 430300100 200 350 40020 40 150 180 240 260 310 320 360 370 420 430(3) 假设有权值集合{16,40,15,4,25},给出相应的huffman 树。
假设某类信息由符号a,b,c,d,e,组成,而上面的权值分别是符号a,b,c,d,e 的出现频率。
请给出各个符号的Huffman 编码。
Huffman 编码: a: 001 b: 1 c: 0001 d: 0000 e: 01注意:因为左右子树不同, 所以编码可以有多种,但是只要7 10 5 8 6 911 7 191635256040100其长度分别是3,1,4,4,2;且 相互之间不形成前缀关系就 是正确的。
(4)在AVL 树的插入操作中,假设插入一个结点后,当前节点p 的平衡因子是-2,其左子结点的平衡因子是+1,左子结点的右子结点的平衡因子是-1。
如图所示,请给出旋转调整之后的结构。
4、已知输入关键码序列为(10,90,20,60,78,35,42,31,15),地址区间为0~11。
(1) 请设计一个散列函数,把上述关键码散到0~11中。
画出散列表,冲突用线性探测法解决。
(5分)散列函数为:f(x) = x % 12 允许其它的散列函数1234567891011得分AB Ct1t2t3t4-2+1-1 p pACBt1t2t3t4+1-1(2) 搜索元素31需要比较的次数是多少?(2分)7 (7-->8->9->10->11->0->1 (成功))(3) 计算在等概率情况下查找成功的平均查找长度ASLsucc。
(3分)(1+7+1+1+2+1+4+1+1) / 9 = 19/95、程序设计题。
(每小题15分,本题满分30分)1. 设计一个算法,根据一棵二叉树的前序序列和中序序列,构造出这棵二叉树。
二叉树的结点都用字符表示。
前序序列和中序序列都是字符串。
二叉树的结点定义如下:struct binTreeNode{char data;binTreeNode *leftChild, *rightChild;}解:TreeNode * tree(char *preorder, *midorder){returnTreeRecursive(preorder, 0, strlen(preorder)-1, midorder, 0, strlen(midorder)-1); }TreeNode * TreeREcursive(char *pre, int preSt, int preEnd,char* mid, int midSt, int midEnd){if (preEnd < preSt)return NULL;char rt = pre[preSt];for(int j = midSt; j<=midEnd; j++)if(mid[j] == rt) break;if(j>midEnd){cout<<"Wrong input"; return NULL;}TreeNode root = new binTreeNode( );root->data = rt;int lLen = j - midSt;root->leftChild = treeRecursive(pre, preSt+1, preSt+lLen - 1,mid, midSt,midSt+lLen-1);root->rightChild=treeRecursive(pre, preSt+lLen+1, preEnd,mid, midSt+lLen+1, midEnd);return root;}要点在于根据preOrder的第一个字符,在midOrder中找到左右子树的分界;然后递归调用生成左右子树;做到这一点,就可以给出大部分分数。
可能有很多细节上不一样的地方,比如这里的preEnd指向的字符在相应的树中;但是有些人可能是preEnd指向下一个位置。
或者传递参数时直接使用字符串传递。
都是可以的。
如果使用别的办法,参考其效率,酌情给分。
只要效率过得去,也可以得满分。
但是纯粹枚举则得分不高。
2. 设计非递归算法实现图的深度优先遍历。
(图用邻接表表示,已经定义了一个顺序栈stack[top],top为栈顶指针,使用visit(node)来表示对顶点node的访问。
)图的邻接表结构定义如下:struct Edge {int dest;Edge *link; //下一条边链指针}struct Vertex {int data;Edge *adj; //边链表的头指针}class Graph {private:Vertex *Nodetable; //顶点表int cnt}解:Graph : :DFS(int v)//从v开始搜索;{bool visited[MAXVert];Edge nextEdge[MAXVert];stack[0] = v;nextEdge[0] = graph.Nodetable[v].adj;top = 0;visited(stack[top]);visited[stack[top]] = true;while(top >= 0){while(nextEdge[top] && visited[nextEdge[top]->dest])//寻找下一个尚未访问的邻接节点nextEdge[top] = nextEdge[top]->link;if(nextEdge[top] != NULL){int nextVert = nextEdge[top]->dest;visite(nextVert); //访问下一个邻接结点;保证了被压入栈中的顶点都被访问;visited[nextVert] = true;stack[top+1] = nextVert; //压栈,进入下一个结点;nextEdge[top+1] = Nodetable[nextVert].adj;nextEdge[top] = nextEdge[top]->link;top ++;}else top --;}}。