数据结构课程设计指导书.docx
- 文档编号:9946231
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:19
- 大小:42.90KB
数据结构课程设计指导书.docx
《数据结构课程设计指导书.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计指导书.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构课程设计指导书
选题一:
迷宫与栈问题2..
选题二:
算术表达式与二叉树3..
选题三:
银行业务模拟与离散事件模拟4.
选题四:
文学研究助手与模式匹配算法KMP5.
选题五:
湖北汽车工业学院校园导游咨询与最短路径6
选题六:
B-树与B+树及其操作7
选题七:
哈夫曼(Huffman)编/译码器8
选题八:
内部排序算法比较9..
选题九:
简单行编辑程序1..0
选题十:
一元多项式计算1..1
选题十一:
集合的交、并、差运算1..2
选题十二:
动态查找表1..3
选题十三:
学生成绩管理1..4
选题十四:
马踏棋盘1..5
选题十五:
joseph环1..6.
选题十六:
最小生成树1..7
选题十七:
通讯录管理1..8
选题十八:
运动会分数统计1..9
选题十九:
航班信息的查询与检索2..0
选题二十:
哈希表应用2..1
选题二十一:
拓扑排序和关键路径2..2
选题二十二:
学生搭配问题2..3
选题二十三:
表达式求值2..4
选题二十四:
宿舍管理查询软件2..5
选题一:
迷宫与栈问题
【问题描述】
以一个mXn的矩阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
【任务要求】
1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。
求得的通路以三元组(i,j,d)的形式输出。
其中:
(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
如,对于下列数据的迷宫,输出一条通路为:
(1,1,
1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。
2)编写递归形式的算法,求得迷宫中所有可能的通路。
3)以方阵形式输出迷宫及其通路。
【测试数据】
迷宫的测试数据如下:
左上角(0,1)为入口,右下角(8,9)为出口。
入口
岀口
1
0
1
1
1
1
1
1
1
1
1
0
0
1
0
0
0
1
0
1
1
0
0
1
0
0
0
1
0
1
1
0
0
0
0
1
1
0
0
1
1
0
1
1
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
1
0
1
0
0
0
1
0
0
1
1
0
1
1
1
0
1
1
0
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
入口
0
1
2
3
4
5
6
7
8
9
0123456789
岀口
选题二:
算术表达式与二叉树
【问题描述】一个表达式和一棵二叉树之间,存在着自然的对应关系。
写一个程序,实现基于二叉树表示的算术表达式的操作。
【任务要求】
假设算术表达式Expression内可以含有变量(a〜z)、常量(0〜9)和二元运算符(+,-,*,/,A(乘幕))。
实现以下操作:
1)ReadExpre(E—以字符序列的形式输入语法正确的前缀表达式并构造表达式E。
2)WriteExpre(E)—用带括弧的中缀表达式输出表达式E。
3)Assign(V,c—实现对变量V的赋值(V=c),变量的初值为0。
4)Value(E—对算术表达式E求值。
5)CompoundExpr(P,E1,E2)--构造一个新的复合表达式(E1)P(E2)
【测试数据】
1)分别输入0;a;-91;+a*bc;+*5Ax2*8x;+++*3Ax3*2Ax2x6并输出。
2)每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
选题三:
银行业务模拟与离散事件模拟
【问题描述】
假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:
00am,关门5:
00pm)起不断有客户进入银行。
由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多
时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:
客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所
占,他便会排在人数最少的队伍后面。
【任务要求】
1)编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时
间。
2)建议有如下设置:
a)客户到达时间随机产生,一天客户的人数设定为100人。
b)银行业务员处理时间随机产生,平均处理时间10分钟。
3)将一天的数据(包括业务员和客户)以文件方式输出。
【测试数据】
由随机数产生器生成
选题四:
文学研究助手与模式匹配算法KMP
【问题描述】
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。
试写一个实现这一目标的文字统计系统
【任务要求】
1)英文小说存于一个文本文件中。
待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。
程序的输出结果是每个词的出现次数和出现位置所在的行的行号,格式自行设计。
待统计的“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个空格符。
2)模式匹配要基于KMP算法。
3)推广到更一般的模式集匹配问题,并设待查模式串可以跨行(提示:
定义操作GetAChar)。
【测试数据】
1)文本文件为testword.c
2)待统计的词集:
if、else、for、while、return、void、int、char、typedef、struct
选题五:
湖北汽车工业学院校园导游咨询与最短路径
问题描述】
1)从湖北汽车工业学院的平面图中选取有代表性景点(10-15个),抽象成一个无向带权图。
以图中顶点表示景点,边上的权值表示两地之间距离。
2)本程序的目的是为用户提供路径咨询。
根据用户指定的始点和终点输出相应路径,或者根据用户指定的景点输出景点的信息。
任务要求】
1)从湖北汽车工业学院的平面图中选取有代表性景点(10-15个),抽象成一个无向带权图。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
4)区分汽车线路与步行线路。
测试数据】
湖北汽车工业学院导游图(距离可估计)。
选题六:
B-树与B+树及其操作
问题描述】
学习并研究
任务要求】
B揺与B+树,并编写演示它们操作的程序。
1)B揺构建、查找、插入和删除操作程序。
2)B+树构建、查找、插入和删除操作程序。
测试数据】
选题七:
哈夫曼(Huffman)编/译码器
【问题描述】
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行
译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译
码系统。
试为这样的信息收发站写一个哈夫曼码的编/译码系统。
【任务要求】
一个完整的系统应具有以下功能:
1)I:
初始化(Initialization)。
从终端读入字符集大小n,以及n个字符和n个权值,
建立哈夫曼树,并将它存于文件hfmTree中。
2)E:
编码(Encoding)。
利用以建好的哈夫曼树(如不在内存,则从文件hfmTree中
读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
3)D:
译码(Decoding)。
利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
4)P:
印代码文件(Print)。
将文件CodeFile以紧凑格式显示在终端上,每行50个代
码。
同时将此字符形式的编码文件写入文件CodePrin中。
5)T:
印哈夫曼树(TreePrinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹
入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。
【测试数据】
1)利用教科书例6-2(严蔚敏《数据结构》P148)中的数据调试程序。
2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码
和译码:
“THISPROGRAMISMYFAVORITE
字符
空格
A
B
C
D
E
F
G
H
I
J
K
L
M
频度
186
64
13
22
32
103
21
15
47
57
1
5
32
20
字符
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
频度
57
63
15
1
48
51
80
23
8
18
1
16
1
选题八:
内部排序算法比较
【问题描述】在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶次,或大概执行时间。
试通过随机数据比较各种算法的关键字比较次数和关键字移动次数,以取得直观感受。
【任务要求】
1)对以下7种常用的内部排序算法进行比较:
冒泡排序、直接插入排序、简单选择排序、希尔排序、堆排序、归并排序、快速排序。
2)待排序表的表长不小于100;其中的数据要用伪随机数程序产生;至少要用5组不
同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。
3)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
【测试数据】
由随机数产生器生成
选题九:
简单行编辑程序
【问题描述】文本编辑器程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、
删除等修改操作。
限制这些操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现。
一种解决办法是逐段地编辑。
任何时刻只把待编辑文件的一段放在内存,利为活区。
试按照这种方法实现一个简单的行编辑程序。
设文件每行不超过320个字符,很少超过80个字符。
【任务要求】
实现以下4条基本编辑命令:
1)行插入:
格式:
i<行号><回车><文本><回车>
将<文本>插入活区中第<行号>行之后。
2)行删除。
格式:
d<行号1>[<空格><行号2>]<回车>
删除活区中第<行号1>(到第<行号2>行)。
例如“d10”和“d1014”
3)活区切换。
格式:
*回车>
将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
4)活区显示。
模式:
p<回车>
逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是继续显示以后各页(如果存在)。
印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。
【测试数据】自行设定,注意测试将活区删空等特殊情况。
选题十:
一元多项式计算
问题描述】
1.能够按照指数降序排列建立并输出多项式;
2.能够完成两个多项式的相加、相减,并将结果输入;
任务要求】
1.存储结构;
2.多项式相加的基本过程的算法(可以使用程序流程图)
3.可以提出算法的改进方法;
测试数据】
自行设定,注意边界等特殊情况。
选题十一:
集合的交、并、差运算
问题描述】编制一个能演示执行集合的交、并和差运算的程序。
任务要求】
1)集合元素用小写英文字母,执行各种操作应以对话方式执行。
2)算法要点:
利用单链表表示集合;理解好三种运算的含义测试数据】
自行设定,注意边界等特殊情况。
选题十二:
动态查找表
【问题描述】利用二叉排序树完成动态查找表的建立、指定关键字的查找、插入与删除指定关键字结点。
【任务要求】
算法输入:
指定一组数据。
算法输出:
显示二叉排序树的中序遍历结果、查找成功与否的信息、插入和删除后的中序遍历结果(排序结果)。
算法要点:
二叉排序树建立方法、动态查找方法,对树进行中序遍历。
【测试数据】
自行设定,注意边界等特殊情况。
选题十三:
学生成绩管理
【问题描述】
本例对学生的成绩管理做一个简单的模拟,用菜单选择方式完成下列功能:
登记学生成绩;查询学生成绩;插入学生成绩;删除学生成绩。
【任务要求】
算法输入:
操作要求,学生信息
算法输出:
操作结果算法要点:
把问题看成是对线性表的操作。
将学生成绩组织成顺序表,则登记学生成绩即是建立顺序表操作;查询学生成绩、插入学生成绩、删除学生成绩即是在顺序表中进行查找、插入和删除操作。
【测试数据】
自行设定,注意边界等特殊情况。
选题十四:
马踏棋盘
【问题描述】
将马随机放在国际象棋的8*8棋盘Bord[8n8]的某个方格中,马按走棋规则进行移动。
要求每个方格上只进入一次,走遍棋盘上全部64个方格。
【任务要求】
编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依
次填入一个8*8的方阵,输出之。
测试数据:
由读者指定,可自行指定一个马的初始位置。
实现提示:
每次在多个可走位置中选择一个进行试探,其余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。
【测试数据】
自行设定,注意边界等特殊情况。
选题十五:
joseph环
【问题描述】
编号是1,2,……,的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报
数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
【任务要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
测试数据:
m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
要求:
输入数据:
建立输入处理输入数据,输入m的初值,n,输入每个人的密码,建立单循环链表。
输出形式:
建立一个输出函数,将正确的输出序列【测试数据】
自行设定,注意边界等特殊情况。
选题十六:
最小生成树
【问题描述】
在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。
对于图,其生成树中的边也带权,将生成树各边的权值总和称为生成树的权,并将权值最小的生成树称为最小生成树(MinimunSpanningTree),简称为MST。
有两种非常典型
的算法:
Prim算法和kruskal算法。
【任务要求】
设计程序完成如下功能:
对给定的网和起点,用PRIM算法和kruskal算法的基本思想
求解出所有的最小生成树。
存储结构可自行选择。
【测试数据】
自行设定,注意边界等特殊情况。
选题十七:
通讯录管理
【问题描述】该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。
该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。
【任务要求】
1)
菜单内容
1、
通讯录链表的建立
2、
通讯者结点的插入
3、
通讯者结点的查询
4、
通讯者结点的删除
5、
通讯录链表的输出
0、
退出管理系统
请选择0~5:
(2)设计要求
使用0~5来选择菜单项,其他输入则不起作用。
(3)功能函数设计
5个不同功能的算法实现编程题,目的是练习利用链表结构来解决实际应用问题的能力,进一步理解和熟悉线形表的链式存储结构。
【测试数据】
自行设定,注意边界等特殊情况。
选题十八:
运动会分数统计
【问题描述】
参加运动会有n个学校,学校编号为1n比赛分成m个男子项目,和w个女子项
目。
项目编号为男子1m女子m+1••…m+w。
不同的项目取前五名或前三名积分;取前
五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
【任务要求】
功能要求:
1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明。
【测试数据】
自行设定,注意边界等特殊情况。
选题十九:
航班信息的查询与检索
【问题描述】
该设计要求对飞机航班信息进行排序和查找。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
【任务要求】
对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二
分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单
的顺序查找方法进行,因此他们用得较少。
每个航班记录包括八项,分别是:
航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表(8条记录)
航班号
起点站
终点站
班期
起飞时间
到达时间
机型
票价
CA1544
合肥
北京
1.2.4.5
1055
1240
733
960
MU5341
上海
广州
每日
1420
1615
M90
1280
CZ3869
重庆
深圳
2.4.6
0855
1035
733
1010
MU3682
桂林
南京
23467
2050
2215
M90
1380
HU1836
上海
北京
每日
0940
1120
738
1250
CZ3528
成都
厦门
1.3.4.5.7
1510
1650
CRJ
1060
MU4594
昆明
西安
1.3.5.6
1015
1140
328
1160
SC7425
青岛
海口
1.3.6
1920
2120
DH4
1630
其中航班号一项的格式为:
K0K1K2K3K4K5
C
Z
3
8
6
9
其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位为航班号,
这种航班号关键字可分成两段,即字母和数字。
其余七项输入内容因为不涉及本设计的核心,
因此除了票价为数值型外,均定义为字符串即可。
【测试数据】
自行设定,注意边界等特殊情况。
选题二十:
哈希表应用
【问题描述】
利用哈希表进行存储。
【任务要求】
任务要求:
针对一组数据进行初始化哈希表,可以进行显示哈希表,查找元素,插入元素,删除元素,退出程序操作。
设计思想:
哈希函数用除留余数法构造,用线性探测再散列处理冲突。
设计目的:
实现哈希表的综合操作简体中文控制台界面:
用户可以进行创建哈希表,显示哈希表,查找元素,插入元素,删除元素。
显示元素:
显示已经创建的哈希表。
查找元素:
查找哈希表中的元素,分为查找成功和查找不成功。
插入元素:
在哈希表中,插入一个元素,分为插入成功和失败。
删除元素:
在已有的数据中,删除一个元素。
退出系统:
退出程序。
【测试数据】
自行设定,注意边界等特殊情况。
选题二十一:
拓扑排序和关键路径
【问题描述】
拓扑排序可判断AOV网络中是否存在回路,使的所有活动可排成一个线性序列,使用每个活动的所有前驱活动都排在该活动的前面。
关键路径的工期决定了整个项目的工期。
任何关键路径上的终端元素的延迟将直接影响项目的预期完成时间(例如在关键路径上没有浮动时间)。
【任务要求】
构建AOV网络,并输出其拓扑序列结果,输出该图的关键路径和关键活动,存储结构自行选择。
【测试数据】自行设定,注意边界等特殊情况。
选题二十二:
学生搭配问题
【问题描述】
一班有m个女生,有n个男生(m不等于n),现要开一个舞会。
男女生分别编号坐在舞池的两边的椅子上,每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。
请设计一系统模拟动态地显示出上述过程。
【任务要求】
(1)输出每曲配对情况
(2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。
至少求出K的两个值。
【提示】
用队列来解决比较方便.
选题二十三:
表达式求值
【问题描述】表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。
设计一个程序,演示用算符优先法对算术表达式求值的过程。
【任务要求】以字符序列的形式从终端上输入语法正确的、不含变量的整数表达式。
利用教材中给出的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教材例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
【实现提示】
(1)设置运算栈和运算数栈辅助分析算符优先关系。
(2)在输入表达式的字符序列的同时,完成运算符和运算数(整数)的识别处理,以
及相应的运算。
(3)在识别出运算数的同时,要将其字符序列形式转换成整数形式。
选题二十四:
宿舍管理查询软件
【问题描述】为宿舍管理人员编写一个宿舍管理查询软件。
【任务要求】
(1)采用交互工作方式;
(2)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、
插入排序等任选一种)。
(3)建立查询菜单:
(用二分查找实现以下操作)按姓名查询按学号查询按房号查询打印任一查询结果(可以连续操作)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)