哈工大数据结构10

合集下载

哈工大数据结构线性结构及其应用

哈工大数据结构线性结构及其应用

哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构课程类型:必修实验项目名称:线性结构及其应用实验题目:线性结构及其应用一、实验目的二、实验要求及实验环境三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.逻辑设计2.物理设计四、测试结果五、系统不足与经验体会六、附录:源代码(带注释)一、实验目的输入中缀表达式保存并显示,之后转换为后缀表达式,并且求出表达式的结果。

二、实验要求及实验环境实验要求(1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。

(2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程和所得到的后缀表达式。

(3)利用栈结构,对上述后缀表达式进行求值,并显示栈的状态变化过程和最终结果。

实验环境Dev-C++软件中运行Win7系统三、设计思想本实验中定义了int 型,char型,struct 型,char *型,struct型逻辑设计:应用栈后进先出的规律,在转换为后缀表达式时,将操作运算符压入栈中,碰见更高级运算符时栈中元素出栈,继续比较;否则压栈。

这样可以完成表达式的转换。

在利用得到的后缀表达式计算结果时,将操作数压栈,遇见符号直接计算,这是后缀表达式的特点。

物理设计:建立一个结构体数组的栈,数组中存放运算符。

数组的添加和减少都在数组末尾元素进行。

可以视为一个栈。

四、测试结果样例1. 输入1+2*(3-4/2)输出为1+2*(3-4/2) ->此为保存并输出的中缀表达式12342/-*+ ->此为输出后缀表达式3 ->此为表达式的值样例2. 输入1+2*3/4-5输出为1+2*3/4-5123*4/+5--3五、系统不足与经验体会不足1.此程序只能进行整形一位数上的计算,无法实现实数范围内的计算。

2.程序用的是结构体数组来表示栈的存储结构,数组定义时,定义一段很大的空间,导致空间利用率不高。

哈工大计算机考研真题2003-2008

哈工大计算机考研真题2003-2008

哈尔滨工业大学2008年考研试题Ⅰ数据结构部分一填空题1.已知一个线性表有n个元素,其中每个元素的数据占8个字节,假设一个指针的大小为4个字节,如果采用有30个元素的数组存储,那么当数组中有效元素个数满足⑴条件时,数组的存储效率比不带头结点的单链表更高。

2. 给定14个字母,假设它们的权值都相等.采用huffman编码,则每个字母的平均代码长度是⑵。

3. 按C语言的运算符优先级,中缀表达式“A&&B||!(E>F)”的等价后缀形式为⑶。

4. 设按顺时针方向移动的循环队列Q[N]的头尾指针分别为F、R,头指针F总是指在队列中的第一个元素的前一位置,尾指针R在最后一个元素的位置,则队列中的元素个数为⑷。

5. 从空二叉树开始,严格按照BST(二又查找树)的插入算法,逐个插入关键字{18,73,10,5,68,99,27,41,32,25)构造出一颗BST ,对该BST按照先根遍历得到的序列为⑸。

6. 将两个长度为m的有序序列归并为一个有序序列,最少需要做⑹次关键字比较,最多需要做⑺次关键字比较。

7. 散列查找中,⑻现象称为冲突,⑼现象称为聚集。

8. 设可用的内存单元可处理4个记录,采用4 路归并的选择树法生成由小到大的初始归并段,对有12个记录在案的文件,产生的第一个初的归并段长度为⑽个。

9. 在两种求图的最小生成树的算法中,⑾算法适合于边稀疏的图的最小生成树。

10. 已知一个序列为{21,39,35,12,17,43},则利用堆排序方法建立的初始堆为:⑿。

二、判断(每题1分.共9分)1. 倒排文件只能按关键字的顺序存储。

(①)2. 堆的存储表示可能是链接式的,也可以是顺序的。

(②)3. 在AOE网中,任何一个关键活动的延迟,都会使整个工程延迟。

(③)4. 有环路的有向图不能进行拓扑排序。

(④)5. 对无向图进行一次深度优先搜索可以访问到图中的所有顶点。

(⑤)6. 大根堆的最大元素应该在堆顶,即根结点。

哈工大数据结构期末试题判断选择(难度大)

哈工大数据结构期末试题判断选择(难度大)

1. 判断题(共20分)------------------------------------------------------------------------------------------------------------ (1). 顺序存储的线性表可以随机存取。

()答案:是(2). 对于n个记录的集合进行归并排序,所需要的附加空间数是0(n)。

()答案:是(3). 矩阵压缩存储的方法是用三元组表存储矩阵元素。

()答案:否(4). 进栈操作push(x,s)作用于链接栈时,无须判满。

()答案:是(5). 在堆中执行insert与deletemin运算都只需o(log2n)时间。

( )答案:是(6). 在索引顺序表查找方法中,对索引顺序表可以使用顺序表查找方法,也可以使用二分查找方法。

()答案:是(7). 因为算法和程序没有区别,所以在数据结构中二者是通用的。

( )答案:否(8). 按中序遍历一棵二叉排序树所得到的中序遍历序列是一个递增序列。

( )答案:是(9). 线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

()答案:否(10). 对于n个记录的集合进行冒泡排序,所需要的平均时间是O(n)。

()答案:否2. 选择题(共20分)------------------------------------------------------------------------------------------------------------ (1). 在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数为__个。

A:4 B:5 C:6 D:7答案: C(2). 设关键字序列为:3,7,6,9,8,1,4,5,2。

进行排序的最小交换次数是__。

A:6 B:7 C:8 D:20答案:A(3). 在一个单链表中,若删除p所指结点的后继结点,则执行( )。

哈尔滨工程大学数据结构历年试卷试卷1

哈尔滨工程大学数据结构历年试卷试卷1

第2页 共 2页8、一棵二叉树高度为h ,所有结点的度或为0或为2,则这棵二叉树最少有( )个结点。

A .2hB .2h-1C .2h+1D .h+19、对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )次序的遍历实现编号。

A .先序B .中序C .后序D .按层次遍历10、一棵二叉树的先序遍历序列为ABCDEFG ,它的中序遍历序列可能是( )。

A .CABDEFGB .ABCDEFGC .DACEFBGD .ADBCFEG11、一棵有n 个结点的二叉树,按层次从上到下,同一层从左到右顺序存储在一维数组A[1..n]中,则二叉树中第i 个结点(i 从1开始用上述方法编号)的右孩子在数组A 中的位置是( )A .A[2i](2i<=n)B .A[2i+1](2i+1<=n)C .A[i-2]D .条件不充分,无法确定12、一个n 个顶点的连通无向图,其边的个数至少为( )。

A .n-1B .nC .n+1D .nlogn13、下列关于AOE 网的叙述中,不正确的是( )。

A .关键活动不按期完成就会影响整个工程的完成时间B .任何一个关键活动提前完成,那么整个工程将会提前完成C .所有的关键活动提前完成,那么整个工程将会提前完成D .某些关键活动提前完成,那么整个工程将会提前完成 14、下面关于折半查找的叙述正确的是( )。

A .表必须有序,表可以顺序方式存储,也可以链表方式存储C .表必须有序,而且只能从小到大排列B .表必须有序且表中数据必须是整型,实型或字符型D .表必须有序,且表只能以顺序方式存储A.直接插入排序B.起泡排序C.快速排序D.直接选择排序二、判断题(每空1分,共10分)1、数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构。

( )2、对任何数据结构,链式存储结构一定优于顺序存储结构。

哈工大数据结构大作业——最小生成树

哈工大数据结构大作业——最小生成树

一、问题描述1.用户手动输入带全图(10个结点);2.通过Prim算法输出对应的最小生成树。

二、方法思路1.关于存储带权图我采用10*10的数组存储。

[i,j]表示第i行j列的元素,存储结点i和j之间的权值;显然,[i,j]=[j,i]。

对于两结点之间不直接相连的情况,用100这个较大权值表示。

对于数组中,[i,i]的情况,也用100表示,因为结点自身到自身的权值不做考虑。

2.关于Prim算法引入集合U和T。

U存放生成树的顶点,T存放生成树的边集。

初值U={1},T=Ø。

选择有最小权的边( u, v),u∈U, v∈(V-U),将v加入U,(u,v)加入T。

重复这一过程,直到U=V。

void Prim( G, T ){T = Ø;U = { 1 };while ( (V –U) != Ø) {设( u, v ) 是使u∈U与v∈(V-U)且权最小的边;T = T∪{ ( u, v ) } ;U = U ∪ { v };}}3.形象表示三、主要数据结构及源程序代码及其注释静态数组:数二维组C用来存储带权图;用一维数组U存储10个结点的最小生成树排序结果;用一维数组M存储第2-10个结点;用一维数组W存储M中的结点到U中结点的最小权值。

#include"stdafx.h"#include<stdio.h>#define n 10//结点数目int main(){int C[n+1][n+1];//存储带权图int e=45;//边数int i,j,m,a;int w;int U[n+1];//存储结点的最小生成树排序int M[n];//存储-10结点int W[n];//存储M中到U中的最小权值int min;int k;int t;for (i=0;i<=n;i++)//结点自身到自身的权值附{for (j=0;j<=n;j++){if(i=j){C[i][i]=100;}}}for(i=0;i<=n;i++)//第行不使用C[0][i]=C[i][0]=100;for(m=1;m<=e;m++)//存储带权图{printf("Input Vertex,Vertex,weight(如果两点不直接相连,输入权值;形式(节点一,节点二,权值)):\n");scanf("%d,%d,%d",&i,&j,&w);getchar();C[i][j]=w;C[j][i]=w;}U[1]=1;for(i=1;i<=n-1;i++)//Prim算法实现M[i]=i+1;for(i=1;i<=n-1;i++){W[i]=C[1][i+1];}for(i=1;i<=n-1;i++){min=W[1];k=1;t=1;while(min==50)//防止最小权值选成已放入U中的结点 {min=W[t+1];k=t+1;t++;}for(j=2;j<=n-1;j++)//选择权值最小结点{if((W[j]<min)&&(W[j]!=50)){min=W[j];k=j;}}U[i+1]=M[k];a=M[k];W[k]=50;//用表示M中已放到U中排序的结点for(j=1;j<=n-1;j++)//修正M中到U中最小权值{if((W[j]!=50)&&(C[j+1][a]<W[j])){W[j]=C[j+1][a];}}}for(i=1;i<=n;i++)printf("%d",U[i]); while(1);}。

哈工大c语数据结构作业

哈工大c语数据结构作业

第—部分数据结构第一章绪论计算机应用相当普遍,计算机的应用已不再局限于科学计算,而更多用于控制、管理及数据处理等非数值计算的处理工作。

与此相应,计算机加工处理的对象由纯粹的数值发展到字符、表格和图像等各种具有一定结构的数据,这就给程序设计带来一些新的问题。

为了编写出一个好的程序,必须分析待处理的对象的特性以及各处理对象之间存在的关系。

这就是数据结构学科形成和发展的背景。

1.1 数据结构一般来说,用计算机解决一个问题时,需要经过如下几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个对此数学模型进行操作的算法,最后编写出程序直至得到解答。

例l:图书馆的书目检索系统。

当你想借阅一本参考书时,你需要到图书馆去查阅图书目录卡片。

如果利用计算机实现自动检索,则计算机处理的对象便是这些目录卡片上的书目信息,列在卡片上的一本书的书目信息可由登录号、书名、作者名、分类号、出版单位和出版时间等各项组成。

每一本书都有唯一的一个登录号。

在书目自动检索系统中建立一张按登录号顺序排列的书目文件,如图 1.1,这个文件就是书目自动检索系统中的数学模型。

计算机的主要操作就是按照某个特定要求(如给定书名)对书目文件进行查询。

图1.11.2 基本概念1.2.1数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数值、字符串、图像、声音都是数据。

1.2.2数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理单位,通常—个数据元素可由若干个数据项组成。

如书目文件中一本书的书目信息就是一个数据元素。

书目信息中的每一项(如书名、作者名)为一个数据项,数据项是不可分割的最小单位。

1.2.3数据对象是性质相同的数据元素的集合,是数据的子集。

1.2.4数据结构简单的说,是相互之间存在一种或多种特定关系的数据元素的集合。

数据结构没有一个明确的定义,它包括三个要素:1. 数据的逻辑结构数据的逻辑结构抽象地反映数据元素之间的逻辑关系,而不管这种逻辑关系在计算机中是如何表示的。

哈尔滨工业大学数据结构考研试题

哈尔滨工业大学数据结构考研试题

哈尔滨工业大学1999年数据结构考研试题(图2、3缺失)一. 名词分析(15分)1.广义表2.最小生成树3.散列表4.堆5.随机文件二. 试分别画出具有3个结点的树和3个结点的二元树的所有不同形态(同构的算一个)。

(6分)三. 本题给出一个子程序的框图,如图2,试填完完善此算法框图。

该子程序用来寻找第一个均出现在三个整数单向链表F1,F2,F3中的相同整数。

假定调用该子程序前,这三个整数链表已按从小到大的次序排序,单向链表的形式如下图1的例子所示。

(15分)(注:在图2中的框图中:found和exit均为布尔型的变量,可取值为true和false。

Val是整型变量,用来存放F1,F2,F3中无相同的整数found 的值为false,否则found的值为true。

F1^.link表示访问found结点的link域)。

四假设一株二元树,按其后根顺序的结点排序为:H,I,D,J,E,B,F,G,C,A而按中根顺序的结点排序为:H,D,I,B,E,J,A,C,F,G(1)试画出这株二元树。

(7分)(2)画出它的线索二元树。

(7分)五已知集合S={7,3,4,6,19,14,16,9,22,11},试按照自左而右的顺序依次取出S中的每个元素,逐步建立一株对应于S的二元查找树。

试画出所得到的二元查找树(不要求给算法)。

(8分)六本题给出的是将数组a的元素a1,a3…,an从大到小排序的子程序的框图,如图3,填空完善此算法框图。

该子程序采用改进的选择排序方法,该方法基本于以下思想:在选择第一大元过程中:a1与aj ( j = n , n –1…,2)逐个比较,若发现aj1>a1,则aj1与a1交换,交换后新的aj1有性质aj1>= at ( j1<t<n )。

若再有aj2 > ai ( j2 < j1 ),aj2与at (j2 < t <= n )。

如在挑选第一大元过程中,与a1交换的元素有k ( k >= 0 )个,依次为aj1,aj2,…,ajk,哈尔滨工业大学2001年数据结构考研试题考试科目:数据结构报考专业:计算机科学与技术一.填空(总分:10分,每一题2分)1.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________, 在给定为x的结点后插入一个新结点的时间复杂度为________。

哈工程初试—数据结构考试大纲

哈工程初试—数据结构考试大纲
考试科目名称:数据结构
考查要点:
一、对数据结构的基本概念和基本分析方法有明确的认识。
二、熟悉线性表的表示和实现的方法,并且对各种链表表示的线性表的插入删除操作有较深刻的理解和掌握。
三、能够深刻理解栈和队列这种数据结构的特性,并能在计算机系统中灵活应用。
四、对字符串、数组及广义表在计算机系统中的作用有基本全面的了解。
五、熟悉二叉树的性质和存储结构,掌握遍历二叉树的各种递归与非递归的算法以及赫夫曼树的应用,并且知晓线索二叉树的线索化过程。
六、熟悉图的存储结构,掌握图的遍历算法,解决最小生成树、拓扑排序、关键路径、最短路径等求解问题。
七、掌握静态查找表和动态查找表的表示和操作实现的方法,了解哈希函数的构造方法以及如何处理哈希表中的冲突。
八、掌握各种内部排序的方法,比较各种内部排序的优缺点。
九、了解有关文件的基本概念,掌握ISAM文件和VSAM文件的结构。
考试总分:50分考试时间:1小时考试方式:笔试
考试题型:选择题(10分)应用题(20分)程序设计(20分)主要参考书:
数据结构(C语言版).严蔚敏,吴伟民编著.北京:清华大学出版社,1997

哈尔滨工业大学数据结构与算法模拟题5套+答案

哈尔滨工业大学数据结构与算法模拟题5套+答案

13哈尔滨工业大学数据结构试题及答案数据结构试卷(一);一、单选题(每题2分,共20分);1.栈和队列的共同特点是();A.只允许在端点处插入和删除元素;B.都是先进后出;C.都是先进先出;D.没有共同点;2.用链接方式存储的队列,在进行插入运算时().;A.仅修改头指针B.头、尾指针都要修改;C.仅修改尾指针D.头、尾指针可能都要修改;3.以下数据结构中哪一个是非线性结构?();A.队列B.数据结构试卷(一)一、单选题(每题 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层的结点数最多为( ).kk-1 A.2-1 B.2K+1 C.2K-1 D. 27. 若有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个结点的无向图,该图至少应有( )条边才能确保是一个连通图。

哈工大数据结构期末试题判断选择(难度小)

哈工大数据结构期末试题判断选择(难度小)

1. 判断题(共20分)------------------------------------------------------------------------------------------------------------ (1). 哈希表的查找效率主要取决于哈希建表时所选取的哈希函数和处理冲突的方法。

()答案:是(2). 线性表的链式存储结构优于顺序行储结构。

()答案:否(3). 在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

()答案:否(4). 对于n个记录的集合进行归并排序,存最坏的情况下所需要的时间是0(n^2)。

()答案:否(5). 由于磁带的价格比磁盘便宜,用磁带实现直接访问文件较为合理。

()答案:否(6). 表中的每一个元素都有一个前驱和后继元素。

()答案:否(7). 只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。

()答案:否(8). 在索引顺序表查找方法中,对索引顺序表可以使用顺序表查找方法,也可以使用二分查找方法。

()答案:是(9). 数据元素是数据的最小单位。

( )答案:否(10). 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

()答案:否2. 选择题(共20分)------------------------------------------------------------------------------------------------------------ (1). 设一个数列的顺序为1,2,3,4,5,6,通过栈结构可以排成的顺序数列为__。

A:5,3,4,6,1,2 B:3,2,5,6,4,1 C:3,1,2,5,4,6 D:1,5,4,6,2,3答案:D(2). 设f是一个森林,b是由f转换得到的二叉树,f中有n个非终端结点,b中右指针域为空的结点有__个。

A:n-1 B:n C:n+1 D:n+2答案:C(3). 一棵深度为h的k叉树具有如下性质:第h层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。

哈工大2000年研究生入学试题数据结构答案

哈工大2000年研究生入学试题数据结构答案

哈工大2000年研究生入学试题数据结构答案哈尔滨工业大学计算机学院2000年研究生入学试题数据结构答案一、名词解释:1.抽象数据型:一个数学模型和在该模型上定义的操作集合的总称。

2.算法的时间复杂性:算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记做T(n)=O(f(n))。

它表示随问题规模n的增大,算法执行的时间的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。

3.散列法:也称杂凑法,它通过对记录的关键字进行某种运算,直接求出记录文件的地址,是关键字到地址的直接转换方法。

4.索引文件:索引文件是在主文件之外再建立一个指示关键字与其物理记录之间的对应关系的表,这种表称为索引表。

索引表与主文件共同构成索引文件。

二、填空:1.为了处理空表的时候方便2.n-13.某种遍历顺序的直接前导节点某种遍历顺序的后继前导节点4.左右链父链邻接表5.插入交换选择归并基数三、判断1.正确2.错误3.正确4.错误5.正确四、区别:堆与二元查找树均满足任一节点的元素值小于其左右儿子的值,但是若按中根顺序遍历一颗二元查找树,将得到最终结果既递增顺序,而堆无此性质,需经过整理才得到最终结果。

五、快速排列是由起泡排列改进而得的,它的基本思想是:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置后,数据序列被此记录分割成两部分。

所有关键字比该记录关键字小的放置在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。

之后对所有的两部分分别重复上述过程,直至每一部分内只有一个记录为止。

简而言之,每趟使表的第一个元素入终位,将表一分为二,对子表按递归方式继续这种划分,直至划分的子表长为1。

六、七、第一、四个正确八、若已知先根和后根的遍历结果,不能构造出这颗树。

因为叶子无兄弟的时候,有二义性,因此知道先根和中根遍历或者知道后跟和中根遍历的结果才能构造出这颗二元树。

哈工大国家级课《数据结构与算法》

哈工大国家级课《数据结构与算法》
29. 假设用于通信的电文由字符集{a,b,c,d,e,f,g,h}中的字母构成,这 8 个字母在 电文中出现的概率分别为{0.07 ,0.19 ,0.02 ,0.06 ,0.32,0.03,0.21 ,0.10}。 (1)为这 8 个字母设计哈夫曼编码。 (2)若用三位二进制数(0-7)对这个 8 个字母进行等长编码,则哈夫曼编码的平均码长是
若有右子树,则 i 应满足的条件是( )。
A.2i+1 <= n
B.2i <= n
C.n/2<= i
D.2i-l <= n
12. 在一棵高度为 k 的二叉树中,最少含有( )个结点。
A.2k-1
B.2k-l
C.2k-1
D.k
13. 在一棵高度为 k 的二叉树中,最多含有( )个结点。
A.2k-1
B.2k-l
(2)编号为 i 的结点的双亲结点(若存在)的编号是多少?
(3)编号为 i 的结点的左孩子结点(若存在)的编号是多少?
(5)编号为 i 的结点有右兄弟的条件是什么,其右兄弟的编号是多少? (6)编号为 i 的结点有右兄弟的条件是什么,其右兄弟的编号是多少? 25. 设二叉树包含的结点数为 1,3,7,2,12。 (1)画出两棵高度最大的二叉树。 (2)画出两棵完全二叉树,要求每个双亲结点的值大于其孩子结点的值。 26. 试找出分别满足下面条件的所有二叉树: (1)前序序列和中序序列相同; (2)中序序列和后序序列相同; (3)前序序列和后序序列相同; (4)前序、中序和后序序列相同。 27. 若二叉树中各结点的值均不相同,则由二叉树的前序序列和中序序列,或由其后序序列 和中序序列均能惟一地确定一棵二叉树,但由前序序列和后序序列却不一定能惟一地确 定一棵二叉树。 (1)己知一棵二叉树的前序序列和中序序列分别为 ABDGHCEFI 和 GDHBAECIF,请画出此 二叉树。 (2)已知一棵二叉树的中序序列和后序序列分别为 BDCEAFHG 和 DECBHGFA。请画出该二 叉树。 (3)已知两棵二叉树的前序序列和后序序列均为 AB 和 BA,请画出这两棵不同的二叉树。 28. 对下图所示二元树: (1)写出该二叉树的前序、中序和后序序列; (2)画出中该二叉树的顺序存储结构、左右链存储结构和带头结点的中序线索存储结构。

哈工大2004-2006年硕士研究生入学考试《数据结构》试题答案1

哈工大2004-2006年硕士研究生入学考试《数据结构》试题答案1

哈工大2004年硕士研究生入学考试试题《数据结构》答案及解析一、 填空题解答:1、()1%m n + 或 ()1mod m n +【备注】本题主要考查考生对循环队列的数组实现过程中 关于空对与满队的区分 ,同时还考查,如何利用数组来实现循环队列,即依赖于数学意义上的求模运算来实现。

2、 第一【备注】本题主要考查考生对二叉树中 关于前序、中序、后序遍历定义的理解,由教材中的理论可知,无论在上述三种遍历中的哪种方式中,在某子树中,同一层级上的左孩子一定在右孩子的前面首先被遍历。

因此,可以将该题抽象为或者简化为如下形式(这也是 二叉树的一般形式):由题意,显然答案如上。

3、 9、4、6、7、8【备注】本题主要考查考生对二分查找(即折半查找)算法的理解。

在二分算法中,需要注意的是,每次对low 、mid 、up 的选取(通过关键字进行比较即可得到)。

由教材中关于对二分查找算法的描述可知:()/2mid low up = + (注意这是两个整型数相加后与整数2作除法,其结果仍为整数,即对数学意义上的结果进行取整。

),下一次可能需要继续查找的区间为两种情况:[],1low mid − 或者 []1,mid up + 。

因此,可以得到本题的查找区间分别为:()117/29mid =+=、()18/24mid =+=、()58/26mid =+=、()78/27mid =+=、()88/28mid =+=4、N 和 2log N⎡⎤⎢⎥【备注】本题主要考查考生对快速排序算法的理解,同时还考察了考生对二分查找、二元查找树、二叉树、算法的最坏情况、算法的最好情况等知识点的理解。

该题有一定的难度。

由所学知识可知:快速排序算法的关键还是类似于二分的思想,那就是每次都将区间分割为三个集合(其中基准元本身单独构成了一个集合),然后依次递归下去。

显然,我们可以将这种剖分方式与二分查找对应起来,由二分查找可知,整个二分查找过程其实就是对应于一个二元查找树,其查找效率与相应的二元查找树的深度相关。

哈尔滨工业大学数据结构与算法历年考题汇总

哈尔滨工业大学数据结构与算法历年考题汇总

[期末] 2005数据结构与算法试卷试卷类型: 期末试卷年份: 05授课教师: 廖明宏有无答案: 无答案哈工大2005年春季学期数据结构与算法试卷)一.填空题(每空1分,共10分)1.假定对线性表(38,25,74,52,48)进行散列存储,采用H(K)=K %7作为散列函数,若分别采用线性探查法和链接法处理冲突,则对各自散列表进行查找的平均查找长度分别为_______和________。

2.假定一组记录的排序码为(46,79,56,38,40,80),对其进行归并排序的过程中,第二趟归并后的结果为________________。

3.在堆排序的过程中,对任一分支结点进行调整运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。

4.有向图的邻接矩阵表示法中某一行非0元素的个数代表该顶点的,某一列非0元素的个数是该顶点的。

]5.对于下面的带权图G3,若从顶点v0出发,则按照普里姆(Prim)算法生成的最小生成树中,依次得到的各条边为______________。

6.由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为7.由三个结点构成的二叉树,共有种不同结构。

二.选择题(每题1分,共10分)1.快速分类在的情况下不利于发挥其长处.`A. 待分类的数据量太大B. 待分类的数据相同值过多C. 待分类的数据已基本有序D. 待分类的数据值差过大.2.两路归并排序中,归并的趟数是。

A. O(n)B. O(log2n)C. O(nlog2n)D. O(n2)注意行为规范(遵守考场纪律第1页,共6页3.对外部分类的K路平衡归并,采用败者树时,归并的效率与K 。

A. 有关B.无关C.不能确定D. 都不对4.对于一个索引顺序文件,索引表中的每个索引项对应主文件中的。

}A. 一条记录B.多条记录C. 所有记录D.三条以上记录5..若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址时。

数据结构课后习题作业

数据结构课后习题作业
符构造的哈夫曼树,如下图所示。
由于字符编码长度与路径长度相等,所以字符串的编码至少有:
8
wili 5*1+5*2+4*3+3*5+3*4+3*4+2*9+2*7=98 位。
i 1
教研室主任签字:
第6页共7页
8.某国有火车站若干个,每个车站有可容纳人数及可停火车数两 项指标。(本题 10 分) (1)写出图的邻接矩阵存储结构(5 分) (2)在图中编写算法,计算该国火车站共能容纳多少人及总的可 停火车总数。(5 分)
500,499,1,0 n-i+1
关键字的值 n+1
题号
答案
6
栈顶、栈底
7
n-1
8
线性、树、图
9
3
10 如果入度为零则入栈
三、应用题(共 60 分)
得分
1.设计判断两个二叉树是否相同的算法。 (本题 6 分) typedef struct node {datatype data; struct node *lchild,*rchild;} bitree;
else return(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,b t2->rchild));
} 2. 已知一个无向图如下图所示,假如结点表示城市,其中有 population 域表示人口,画出最小生成树的求解过程 (本题 5 分)
(2)画出最后得到的哈希表;(2 分)
(3)求平均查找长度。(1 分)
答案:
散列函数:H(K) = k % m 其中依题意得 m = 13
H( 32 ) = 32 % 13 = 6 H( 75 ) = 75 % 13 = 10 H( 29 ) = 29 % 13 = 3 H( 63 ) = 63 % 13 = 11 H( 48 ) = 48 % 13 = 9 H( 94 ) = 94 % 13 = 3 (冲突)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.内排序 整个排序过程都在内存进行的排序称为内排序。
7.外排序 待排序的数据元素量大,以致内存一次不能容纳全部记录,
在排序过程中需要对外存进行访问的排序称为外排序。
本章只讨论内排序。
10.2 插入排序
1.直接插入排序
基本思想: 直接插入排序是一种最简单的排序方法,它的基本操
作是将一个记录插到已排序好的有序表中,从而得到一个 新的,记录数增 1 的有序表。
01 23 4 5 36 24 10 6 12 i
24 24 36
பைடு நூலகம்
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5 36 24 10 6 12 i
10 24 36 10
第10章 排序
10.1 概述
1.排序(Sorting) 将数据元素(或记录)的任意序列,重新排列成一个按关
键 字有序(递增或递减)的序列的过程称为排序。 2. 排序过程中的两种基本操作 (1)比较两个关键字值的大小。 (2)根据比较结果,移动记录的位置。
3.对关键字排序的三个原则 (1)关键字值为数值型的,则按键值大小为依据。 (2)关键字值为ASCII码,则按键值的内码编排顺序为依据。 (3)关键字值为汉字字符串类型,则大多以汉字拼音的字典
01 23 4 5
36 24 10 6 12 i
10
24 36
1、直接插入排序 e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5 36 24 10 6 12 i
10 10 24 36
与排序前保持一致,则这种排序法是稳定的。 若排序后的序列为:3,3,5,6,6,8
则这种排序法是不稳定的。
5.待排序记录的三种存储方式 (1)待排序记录存放在地址连续的一组存储单元上。 (2)待排序记录存放在静态链表中。 (3)待排序记录存放在一组地址连续的存储单元,同时另
设一个指示各个记录存储位置的地址向量,在排序过程中不移 动记录本身,而移动地址向量中这些记录的“地址”,在排序 结束后,再按照地址向量中的值调整记录的存储位置。
01 23 4 5
36 24 10 6 12 i
6 10 24
36
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5
36 24 10 6 12 i
6 10
24 36
如果所取元素大于等于有序序列的序尾,则保持原存储位置不变。
1、直接插入排序 e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5 36 24 10 6 12 i
24 36 24
1、直接插入排序
循环: 从未排序序列中依次取一个元素;(循环从i=2,3,4,5...) 取一个元素后进行判断:
如果所取元素小于当前有序序列的序尾,则: (1)将所取元素赋值给r[0], r[0] 当作哨兵。 (2)循环:
在当前有序序列中寻找自己的位置,进行插入: 从当前有序序列的序尾开始,倒着往前,将哨兵与相应元素逐个比较: 哨兵比当前元素小,当前元素就往后移一个位置;再往前比,若哨 兵比当前元素还小,当前元素再往后移一个位置 ...直到哨兵大于 等于当前元素,循环结束,将哨兵插入到当前元素的后面。
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5 36 24 10 6 12 i
6 10 24 36 6
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5
36 24 10 6 12 i
24
36
1、直接插入排序 e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
次序为依据。
4.排序方法的稳定和不稳定 若对任意的数据元素序列,使用某个排序方法按关键字进
行排序,对原先具有相同键值元素间的位置关系,若排序前与 排序后保持一致,称此排序方法是稳定的;反之,则称为不稳 定的。
例:对数据键值为:5,3,8,3,6,6,排序。 若排序后的序列为:3,3,5,6,6,8 其相同键值的元素位置依旧是 3 在 3 前,6 在 6 前,
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
整个排序过程为 n-1 趟插入,即先将序列中第 1 个记 录看成是一个有序子序列,然后从第 2 个记录开始,逐个 进行插入,直至整个序列有序。
取要插入的元素,直接插在一个有序序列的合适位置。
01 23 4 5 36 24 10 6 12
排序过程:
将第一个元素 r[1] 作为已排序有序序列; 其他元素r[2],r[3],r[4],r[5],...r[n]作为未排序序列;
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
01 23 4 5
36 24 10 6 12 i
10 24
36
1、直接插入排序
e.g: 36、24、10、6、12存放在 r 数组的下标为 1 至 5 的元素之中,用直接插入法将 其排序。结果仍保存在下标为 1 至 5 的元素之中。
相关文档
最新文档