数据结构专题实验Word格式.docx
- 文档编号:18889653
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:9
- 大小:49.70KB
数据结构专题实验Word格式.docx
《数据结构专题实验Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构专题实验Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
5.整理实验报告
在上机实验开始之前要充分准备实验数据,在上机实践过程中要及时记录实验数据,在上机实践完成之后必须及时总结分析,写出实验报告
实验一线性表
一、实验目的
1.了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。
2.重点是线性表的基本操作在两种存储结构上的实现;
其中以链表的操作为侧重点;
并进一步学习结构化的程序设计方法。
二、实验内容
1-1输入整型元素序列利用插入算法建立一个非递减有序表。
请设计程序实现。
要求:
采用顺序存储结构实现;
采用链式存储结构实现;
比较两种方法的优劣。
1-2设计程序实现把题1建立的顺序表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
1-3设计程序实现把题1建立的单链表中值相同的多余结点的删除。
1-4约瑟夫环问题。
有n个人围坐一圈,现从某个人开始报数,数到M的人出列,接着从出列的下一个人开始重新报数,数到M的人又出列,如此下去,直到所有人都出列为止。
试设计确定他们出列次序的程序。
要求选择单向循环链表作为存储结构模拟整个过程,并依次输出出列人的编码。
*1-5用链表建立通讯录。
通讯录内容有:
姓名、通讯地址、电话号码。
通讯录是按姓名项的字母顺序排列的;
能查找通讯录中某人的信息。
*1-6超长正整数的加法,设计一个程序实现两个任意长的整数求和运算
【提示】可采用一个带有头结点的循环链表来表示一个非负的超大整数。
从低位开始每四位组成的数字,依次放在链表的第一个、第二个、……第n个结点中,不足四位的最高位存放在链表的最后一个结点中,表头结点值规定为-1。
例如:
大整数“567890987654321”可用如下的头结点的链表表示:
按照此数据结构,可以从两个表头结点开始,顺序依次对应相加,求出所需要的进位后,将其代入下一个结点进行运算。
*1-7综合训练。
利用单链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)。
实验二栈和队列
1.掌握栈这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
2.掌握队列这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
3.了解和掌握递归程序设计的基本原理和方法。
2-1采用顺序存储实现栈的初始化、入栈、出栈操作。
2-2采用顺序存储实现循环队列的初始化、入队、出队操作。
2-3设单链表中存放着n个字符,利用栈结构,试设计算法判断字符串是否中心对称。
例如xyzzyx即为中心对称的字符串。
2-4假设仅知循环队列中队尾元素的位置rear和内含元素的个数len(len<
Maxsize),试为该循环队列设计相应的入队和出队算法。
*2-5阿克曼函数(Ackermann’sfunction)定义如下:
人们之所以研究该函数,是因为m和n值的较小增长都会引起函数值的极快增长。
(1)设计一个递归算法的源程序,上机运行。
(2)设计一个非递归算法的源程序,上机运行。
并进行比较。
*2-6综合训练。
利用栈实现表达式求值算法。
*2-7离散事件模拟。
*2-8编写递归程序求顺序表中的最大(最小)值。
1
11
121
1331
*2-9二项式(a+b)n展开后,其系数构成杨辉三角形,利用队列写出打印杨辉三角形的前n行的程序。
实验三串
1.熟悉串类型的实现方法,了解简单文字处理的设计方法。
2.熟悉C语言的字符和把字符串处理的原理和方法。
3.熟悉C语言常见的字符串处理函数。
3-1输入一个由若干单词组成的文本行,每个单词之间用若干个空格隔开,统计此文本中单词的个数。
3-2设s、t为两个字符串,分别放在两个一维数组中,m、n分别为其长度,判断t是否为s的子串。
如果是,输出子串所在位置,否则输出0。
3-3设计可以在主串s中第i个位置插入一个子串t的程序。
3-4串的置换。
将主串s中的t串,置换为v串。
3-5比较两个字符串的大小。
实验四数组
1.熟悉数组的存储结构及应用。
2.熟悉稀疏矩阵的“三元组表”和“十字链表”存储结构,运用它们进行矩阵简单运算处理。
4-1编写用“三元组表”存储稀疏矩阵,进行矩阵处理的程序。
(1)矩阵转置
(2)矩阵相加
4-2给定一奇数n,构造一个n阶魔阵。
n阶魔阵是一个n阶方阵,其元素由自然数1,2,3,…,n组成。
魔阵的每行元素之和,每列元素之和以及主、副对角线元素之和均相等。
即对于给定的奇整数n以及i=l,2,3,…,n,魔阵a满足条件。
要求输出结果的格式要具有n阶方阵的形式。
*4-3迷宫实验。
迷宫实验是取自心理学的一个古典实验,在该实验中,把一只老鼠从一个无顶大盒子的口放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。
盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找出路以到达出口,对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步,老鼠经多次实验终于得到它学习走通迷宫的路线。
试设计一个算法,寻找一条从迷宫入口到出口的最短路径。
要求程序输出:
(1)一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。
(2)用一种标志(如数字8)在二维数组中标出该条通路,并在屏幕上输出二维数组。
实验五树与二叉树
1.熟练掌握二叉树在二叉链表存储结构中的常用遍历方法:
先序递归遍历、中序递归和非递归遍历、后序递归遍历。
了解二叉树的按层遍历、先序非递归遍历及后序递归遍历。
2.用树解决实际问题,如哈夫曼编码等。
3.加深对“数据结构+算法=程序”的理解和认识,提高编写较复杂程序的能力。
5-1一棵具有n个结点的完全二叉树以一维数组作为存储结构,试设计一个对该完全二叉树进行先序遍历的算法。
5-
2二叉树的建立和操作。
(1)对右图所示的二叉树建立二叉链表存储结构。
(2)采用递归算法中序遍历该二叉树。
(3)采用非递归算法中序遍历该二叉树。
(4)求该二叉树的高度。
(5)求该二叉树的叶子个数。
(6)对该二叉树,建立相应的中序线索二叉树,并实现中序遍历。
5-3已知一棵二叉树的先序遍历序列和中序遍历序列,写出可以唯一确定一棵二叉树的算法。
*5-4哈夫曼树问题。
利用哈夫曼编码进行通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本,但是,这要求在发送端通过一个编码系统对待传数据进行预先编码;
在接受端将传来的数据进行解码(复原)。
对于双工信道(即可以双向传输的信道),每端都要有一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼的编译码系统。
(1)从终端读入字符集大小为n(即n个字符和n个权值),建立哈夫曼树,进行编码并且输出,并将它存于文件hfmtree中。
(2)利用已建好的哈夫曼编码文件hfmtree,对键盘输入的正文进行译码。
输出字符正文,再输出该文的二进制码。
请用下表中给出的字符集和频度的实际统计数据建立哈夫曼树:
字符
A
B
C
D
E
F
G
H
I
J
K
L
M
N
频度
64
13
22
32
103
21
15
47
57
1
5
20
O
P
Q
R
S
T
U
V
W
X
Y
Z
空格
63
48
51
80
23
8
18
16
168
并实现以下报文的译码和输出:
“THISPROGRAMISMYFAVORITE”。
实验六图
1.熟悉图的两种常用的存储结构(邻接矩阵、邻接表),以及在这两种存储结构上的两种遍历图的方法,即深度优先遍历和广度优先遍历。
进一步掌握递归算法的设计方法。
2.掌握图的经典算法。
6-1设计一个程序,为下图的建立邻接矩阵,并进行深度优先遍历。
6-2设计一个程序,为题1的图建立邻接表,并进行广度优先遍历。
6-3试写一个算法,判别以邻接表方式存储的有向图G中是否存在由顶点vi到顶点vj的路径(i≠j)。
6-4假设以—个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价。
试设计一个交通指南系统,指导前来咨询者以最低的票价从区域中的某一场所到达另一场所。
*6-5软件专业的学生要学习一系列课程,其中有些课程必须在其先修课程完成后才能学习,具体关系见下表:
课程编号
课程名称
先决条件
C1
程序设计基础
无
C2
离散数学
C3
数据结构
C1,C2
C4
汇编语言
C5
语言的设计和分析
C3,C4
C6
计算机原理
C11
C7
编译原理
C3,C5
C8
操作系统
C3,C6
C9
高等数学
C10
线性代数
普通物理
C12
数值分析
C1,C9,C10
假设每门课程的学习时间为一学期,试为该专业的学生设计教学计划,使他们能在最短的时间内修完这些课程。
实验七查找
1.掌握几种典型的查找方法(折半查找、二叉排序树的查找、哈希查找)。
2.了解各种查找算法的特点、使用范围和效率。
7-1二叉排序树的建立、查找和删除。
设有一组数据(33,88,22,55,90,11,66,99),边输入边插入建立二叉排序树。
然后查找78,删除90。
7-2编写折半查找的算法的递归调用程序。
*7-3设有一组关键字(19,14,23,1,68,20,84,27,56,11,10,79),建立一个哈希查找表。
(1)哈希函数采用:
H(key)=key%P(其中P=11),若发生冲突后,用链地址法解决冲突。
(2)哈希函数采用:
H(key)=key%P(其中P=11),若发生冲突后,用线性探测再散列方法解决冲突。
实验八排序
1.熟悉几种典型的排序方法。
2.了解各种排序算法的特点、使用范围和效率。
8-1输入一组关键字序列分别实现下列排序:
(1)直接插入排序、直接选择排序和冒泡排序
(2)希尔排序
(3)堆排序
(4)快速排序
8-2统计成绩。
给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计—个算法:
(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;
(2)要求学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。
(3)分别用冒泡排序和快速排序算法实现。
*8-3综合训练:
采用几组不同数据测试各个排序算法的性能(比较次数和移动次数)。
数据结构实验报告
实验名称:
_______________________________评分:
________
专业:
___________班级:
___________小组编号:
_______
实验内容:
实验目的:
实验源程序:
(源程序必须调试通过;
需有必要的注释;
源程序可打印,附在本实验报告之后。
)
实验程序执行结果:
(实验结果可以手写,也可以截屏打印出来。
实验过程中出现的问题及解决方法:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 专题 实验