数据结构实验.docx

上传人:b****3 文档编号:24880554 上传时间:2023-06-02 格式:DOCX 页数:16 大小:55.85KB
下载 相关 举报
数据结构实验.docx_第1页
第1页 / 共16页
数据结构实验.docx_第2页
第2页 / 共16页
数据结构实验.docx_第3页
第3页 / 共16页
数据结构实验.docx_第4页
第4页 / 共16页
数据结构实验.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据结构实验.docx

《数据结构实验.docx》由会员分享,可在线阅读,更多相关《数据结构实验.docx(16页珍藏版)》请在冰豆网上搜索。

数据结构实验.docx

数据结构实验

实验一线性表实验1

实验二栈、队列实验3

实验三串和数组实验5

实验四树实验5

实验五图实验6

实验六查找表实验7

实验七内排序实验8

实验一线性表实验

【实验目的】

1.掌握顺序表、单链表、循环链表、双向链表的构造原理及其基本运算的实现算法。

2.了解线性表的顺序存储和链式存储结构的特点和适用情形。

【实验学时】

6学时

【实验内容】

题目一:

编写一个程序,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初始化顺序表L。

(2)依次采用尾插法插入a,b,c,d,e元素。

(3)输出顺序表L及L的长度。

(4)判断顺序表L是否为空。

(5)输出顺序表L的第3个元素。

(6)输出元素d的位置。

(7)在第4个元素位置上插入f元素。

(8)删除L的第3个元素。

(9)输出顺序表L。

(10)释放顺序表L。

题目二:

编写一个程序,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初始化单链表H。

(2)依次采用尾插法插入a,b,c,d,e元素。

(3)输出单链表H及H的长度。

(4)判断单链表H是否为空。

(5)输出单链表H的第3个元素。

(6)输出元素d的位置。

(7)在第4个元素位置上插入f元素。

(8)删除H的第3个元素。

(9)输出单链表L。

(10)释放单链表L。

题目三:

编写一个程序,实现双链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(题目三、四选做1个)

(1)初始化双链表H。

(2)依次采用尾插法插入a,b,c,d,e元素。

(3)输出双链表H及H的长度。

(4)判断双链表H是否为空。

(5)输出双链表H的第3个元素。

(6)输出元素d的位置。

(7)在第4个元素位置上插入f元素。

(8)删除H的第3个元素。

(9)输出双链表L。

(10)释放双链表L。

题目四:

编写一个程序,实现循环单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初始化循环单链表H。

(2)依次采用尾插法插入a,b,c,d,e元素。

(3)输出循环单链表H及H的长度。

(4)判断循环单链表H是否为空。

(5)输出循环单链表H的第3个元素。

(6)输出元素d的位置。

(7)在第4个元素位置上插入f元素。

(8)删除H的第3个元素。

(9)输出循环单链表L。

(10)释放循环单链表L。

实训项目:

1.将单链表按某个基准划分。

编写一个程序,以给定值x为基准将单链表分割为两部分,所有小于x的结点排在大于或等于x的结点之前。

并分析时间复杂度。

2.用单链表表示的两个集合(假设同一个集合中不存在重复的元素),求它们的并、交和差运算。

3.实现两个多项式相加运算。

(2、3选做一个)

4.用单链表实现两个大整数相加运算。

要求:

(选做)

(1)将用户输入的十进制整数字符串转化为带头结点的单链表,每个结点存放一个整数位。

(2)求两个整数单链表相加的结果单链表

(3)求结果单链表的中间位,如234的中间位是“3”,2345的中间位是“3”。

5.P86的2.18约瑟夫问题。

6.列车时刻表管理系统

案例描述:

一个火车要对进出本站的列车信息进行计算机管理,包括建立、增加、删除、查询、修改车次信息等。

列车信息有车次、开点、到点、始发站、终点站等。

已知进出该站的列车车次变化较多。

 

实验二栈、队列实验

【实验目的】

1.掌握栈的顺序及链式存储和基本运算的实现方法

2.掌握队列的顺序及链式存储和基本运算的实现方法

3.了解栈和队列的应用

【实验学时】

8学时

【实验内容】

题目一:

编写一个程序,实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初始化栈S。

(2)判断栈S是否非空。

(3)依次进栈元素a,b,c,d,e。

(4)输出栈的长度。

(5)输出从栈顶到栈底的元素。

(6)输出出栈序列。

(7)释放栈。

题目二:

编写一个程序,实现循环队列的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初始化队列Q。

(2)判断队列Q是否非空。

(3)依次进队列元素a,b,c。

(4)出队一个元素,输出该元素。

(5)输出队列Q的元素个数。

(6)依次进入队列元素d,e,f。

(7)输出出队序列。

(8)释放队列。

要求:

其中队列的插入和删除算法按照P134的3.24改写。

【实训项目】:

1.P132:

3.10,3.14,3.19。

2.利用栈对只含二目运算符的中缀算术表达式求值,并将该中缀表达式转换为后缀表达式。

算术运算符包括:

*、/、+、-,优先级从高到低。

3.用栈求解下图所示迷宫的所有路径,并输出最短路径长度及该最短路径。

4.P133的3.17:

八皇后问题,可以用递归方法实现,或者借助栈实现。

(选做)

5.病人看病模拟程序

编写一个程序,反映病人到医院看病,排队看医生的情况。

在病人排队过程中,主要重复两件事:

(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊

(2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊

要求模拟病人等待就诊这一过程。

程序采用菜单方式,其选项及功能说明如下:

●排队――输入排队病人的病历号,加入病人排队队列中;

●就诊――病人排队队列中最前面的病人就诊,并将其从队列中删除;

●查看排队――从对首到队尾列出所有的排队病人的病历号;

●不再排队,余下依次就诊――从对首到队尾列出所有的排队病人的病历号,并退出运行;

●下班――退出运行。

 

实验三串和数组实验

【实验目的】

1.掌握串的顺序存储结构

2.掌握串的基本算法及应用

3.掌握模式匹配的各种算法

4.掌握数组和广义表的基本算法

【实验学时】

8学时

【实验内容】

1.采用顺序存储结构存储串,编写一个程序,采用简单模式匹配方法求串s中出现的第一个最长重复子串的下标和长度。

例如:

s=“aababcabcdabcde”,最长重复子串为:

abcd

2.编写一个程序,利用KMP算法求子串t在主串是中出现的次数,并以s=”aaabbdaabbde”,t=“aabbd”为例,显示其匹配过程。

(匹配过程的显示选做)。

3.实现稀疏矩阵的基本运算。

假设n*n的稀疏矩阵A采用三元组表示,设计一个程序,实现如下功能:

(1)生成如下两个稀疏矩阵的三元组a和b;

10303000

01000400

00100010

00110002

(2)输出a转置矩阵的三元组

(3)输出a+b的三元组

4.实现广义表的基本运算。

编写一个程序,实现广义表的以下操作,完成以下功能:

(1)建立广义表g=(b,(b,a,(),d),((a,b),c,(())))的链式存储结构。

(2)输出广义表g的长度

(3)输出广义表g的深度。

5.求一个矩阵中的马鞍点。

如果矩阵A中存在这样的一个元素,满足条件:

A[i][j]是第i行中值最小的元素,并且是第j列中值最大的元素,则称之位该矩阵的一个马鞍点。

设计一个程序,求矩阵中所有的马鞍点。

实验四树实验

【实验目的】

1.掌握二叉树的顺序和链式存储结构

2.掌握二叉树的建立、遍历、线索化等基本算法及应用

3.掌握哈夫曼树的构造过程和哈夫曼编码方法

4.了解树、森林与二叉树的转换算法

5.了解哈夫曼编码和解码算法

【实验学时】

10学时

【实验内容】

1.编写一个程序,实现二叉树的各种运算,并在此基础上设计一个主程序完成如下功能:

A

B

D

C

Y

G

F

E

 

图一

(1)由如图一所示的二叉树创建其对应的二叉链表存储结构(提示:

由二叉树的扩展前序序列构造二叉链表)

(2)输出二叉树的中序、先序、后序遍历序列的递归和非递归算法(中序必做,先序和后序选做);

(3)输出二叉树B(树形结构或者广义表形式);(选做)

(4)输出二叉树中指定结点值(假设所有节点值不同)的左右孩子结点;

(5)输出二叉树B的叶子结点个数;

(6)输出该二叉树的高度;

(7)输出二叉树中指定结点值(假设所有节点值不同)的结点所在的层次;(选做)

(8)释放二叉树B。

2.已知一棵树的前序遍历序列和中序遍历序列,试构造这棵二叉树,以P248的5.18验证。

3.P248的5.26,用非递归方式实现,选做。

4.线索化二叉树的操作:

(1)编写一个程序实现二叉树的中序线索化,采用递归和非递归方式输出中序线索二叉树的中序序列,并以图

(一)所示的二叉树B对程序进行验证;

(2)求出该线索化二叉树中给定结点的直接前驱和直接后继结点。

(3)P249选做5.31。

单词

The

of

a

to

and

In

that

he

is

at

on

for

his

are

be

频率

1192

677

541

518

462

450

242

195

190

181

174

157

138

124

123

5.编写一个程序,构造一棵哈夫曼树,输出对应的哈夫曼编码和平均查找长度,并对表1所示的数据进行验证。

表1单词及出现的频率

【实训项目】:

(选做)

1.对某大学的信息进行统计

内容:

编写一个程序,实现大学的数据统计,某大学的组织机构如表所示,该数据存放在文本文件abc.txt中。

要求采用树的孩子链表存储结构存储它,并完成以下功能:

(1)从abc.txt文件中读数据到R数组中;

(2)由数组R创建树t的孩子链存储结构;

(3)采用广义表形式输出树t;

(4)求计算机学院的专业数量;

(5)求计算机学院的班级数量;

(6)求电信学院的学生数量;

(7)销毁树。

 

单位

下级单位或人数

单位

下级单位或人数

中国地质大学

计算机学院

物联网

物联班

中国地质大学

电信学院

物联班

38

计算机学院

计算机科学

电信学院

电子信息类

计算机学院

信息安全

电信学院

信息工程

计算机学院

物联网

电子信息类

电信1班

计算机科学

计科1班

电子信息类

电信2班

计算机科学

计科2班

电子信息类

电信3班

计算机科学

计科3班

电信1班

40

计科1班

32

电信2班

38

计科2班

35

电信3班

42

计科3班

33

信息工程

信息1班

信息安全

信安1班

信息工程

信息2班

信安1班

36

信息1班

38

信安2班

38

信息2班

35

 

实验五图实验

【实验目的】

1.掌握图的邻接矩阵、邻接表等存储表示方法

2.掌握图的深度优先遍历和广度优先遍历算法

3.了解最小生成树、最短路径等问题的求解过程、算法和应用

4.了解关键路径、拓扑排序等问题的求解过程和应用

【实验学时】

2学时

【实验内容】

题目一:

编写一个程序,实现图的相关运算,并在此基础上设计一个主程序完成如下功能:

(1)

建立图

(二)所示的有向图G的邻接矩阵,并输出之。

(2)由有向图G的邻接矩阵产生邻接表,并输出之。

(3)再由

(2)的邻接表产生对应的邻接矩阵,并输出之。

题目二:

编写一个程序,实现图的遍历算法,并在此基础上设计一个主程序完成如下功能:

(4)输出图

(二)的有向图G从顶点V1开始的深度优先遍历序列序列(递归算法)

(5)输出如图

(二)的有向图G从顶点v1开始的深度优先遍历序列(非递归算法)

(6)输出如图

(二)的有向图G从顶点v1开始的广度优先遍历序列(选做)

【实训项目】子工程建设时间的安排(选做?

现某公司有一计算机机房建设工程,它包含的子工程以及各子工程之间的关系如表2所示。

由于资金和场地等条件限制,这些子工程必须一项一项地进行,不能有并行情况。

请给出一种可行的安排这些子工程建设时间的一个线性序列,按照它的顺序依次进行各个子工程的建设,以顺利完成整个工程。

 

表2计算机机房建设工程表

子工程代号

子工程名称

前序子工程

V1

设计图纸

V2

招标公司

V3

机房装修

V1V2

V4

购买电源

V1

V5

购买机器

V2

V6

装机组网

V3V4V5

V7

软件配置

V6

V8

网络调试

V6V7

V9

工程验收

V6V7V8

 

实验六查找表实验

【实验目的】

1.掌握顺序查找、二分查找等算法的思想、查找过程、算法实现及应用

2.了解哈希表的构造、哈希函数的构造方法及处理冲突的方法

3.了解二叉排序树的构造、查找等算法

【实验学时】

2学时

【实验内容】

题目一:

编写一个程序,输出在顺序表{3,6,2,10,1,8,5,7,4,9}中采用顺序方法查找关键字5的过程。

题目二:

编写一个程序,输出在顺序表{1,2,3,4,5,6,7,8,9,10}中采用二分查找方法查找关键字5的过程。

题目三:

编写一个程序实现哈希表的相关运算,并在此基础上完成如下功能:

(1)建立{16,74,60,43,54,90,46,31,29,88,77}哈希表A[0……12],哈希函数为:

H(k)=key%p,并采用线性探测再散列法解决冲突

(2)在上述哈希表中查找关键字为29的记录

(3)在上述哈希表中删除关键字为77的记录,再将其插入。

 

实验七内排序实验

【实验目的】

1.掌握直接插入排序、冒泡排序、快速排序、希尔排序等排序方法的基本思想、排序过程、算法实现及其稳定性、复杂度和适用场合等特性及应用

2.了解堆排序、归并排序、基数排序等排序方法的基本思想、排序过程、稳定性、复杂度和适用场合等特性

【实验学时】

2学时

【实验内容】

题目一:

编写一个程序实现直接插入排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

题目二:

编写一个程序实现希尔排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

题目三:

编写一个程序实现快速排序过程,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。

 

一、课程设计要求

1、对系统进行功能分解、模块分析、控制模块分析正确

2、选择合适的操作系统原理所需要数据结构以及相应的算法

3、程序规模适中,着重于内核修订功能,也可以编写外围的程序驱动、文件系统的辅助工具和网络工具等。

尽可能的使系统的功能更加完善和全面

4、掌握程序调试的方法

5、说明书、流程图要清楚,阐述设计思路。

6、撰写课程设计报告。

按格式要求写出完整、规范的报告并打印。

其中模块图、流程图要清楚、规范。

特别要求学生自己独立完成。

二、课程设计报告要求:

总结报告按如下内容顺序进行撰写并打印装订成册:

1、统一的封面;

2、内容摘要;

3、目录

4、课程设计正文包含以下内容:

(1)需求分析

(2)概要设计:

每个部分的算法设计说明可以是描述算法的流程图,说明每个程序中使用的存储结构设计(如果指定存储结构请写出该存储结构的定义)

(3)详细设计:

各个算法实现的源程序,源程序要按照写程序的规则来编写。

要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

(4)调试分析:

测试数据,测试输出的结果,算法时间复杂度分析

(5)结论和展望:

主要模块设计和调试时存在问题的思考问题是哪些?

问题如何解决?

)和算法的改进设想。

课程设计过程的收获、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。

(6)按统一格式列出主要参考文献。

三、学生上交材料:

1.程序源代码和一组较完备的测试数据(打包上传,发送到指导老师的邮箱中,文件名格式为:

学号-姓名)。

2.上交程序的说明文件:

(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名。

3.课程设计报告。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1