哈工大数据结构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
  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 的元素之中。
相关文档
最新文档