《数据结构》实验指导书
- 格式:doc
- 大小:310.50 KB
- 文档页数:13
数据结构
实验指导书
吉林大学珠海学院计算机系
2012.12
实验目的与要求
《数据结构》是计算机学科重要的专业基础课,北京市高校已将该课作为理工科非计算机专业的提高课程,北京大学将此课列为理工科非计算机专业必修课已经超过15 年。该课程主要研究信息在计算机中的组织和表示方法。上机实验是本课程教学至关重要的环节,通过上机实验,使学生在数据结构的逻辑结构定义、存储表示、操作的实现、数据结构的选择和应用、算法实践等方面加深对课程内容的理解,训练学生进行复杂程序设计的技能和培养良好程序设计的习惯。
考虑到大一上学期学习过C程序设计,本学期有C课程设计和C++程序设计,故数据结构课程的实验不安排验证性实验,按课程设计要求。具体说是期初布置题目,按学号顺序确定如下题目,学生自己准备,期中检查,15周开始验收。验收时间安排在周末。
实验内容
从以下题目中选一题
题目一、航空客运订票系统
题目二、文章编辑
题目三、宿舍管理查询软件
题目四、校园导航系统
题目五、散列法的实验研究
题目六、小型图书馆管理系统(链表的插入,排序,查询,删除)
题目七、学生搭配问题
题目八、敢死队问题
题目九、教学计划编制问题
题目十、活期储蓄帐目管理
题目十一、通讯录的制作
题目十二、二叉排序树的实现
题目十三、利用栈求表达式的值
题目十四、走迷宫游戏
题目十五、顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
题目十六、线索二叉树的应用
题目十七、稀疏矩阵实现与应用
题目十八、树的应用
题目十九、图的遍历和生成树求解实现
题目二十、排序综合
题目二十一、纸牌游戏
题目二十二、利用栈求表达式的值,可供小学生作业,并能给出分数
题目二十三、数制转换问题
题目二十四、停车场问题
题目二十五、学生成绩管理系统
题目二十六、哈夫曼编码/译码器
题目二十七、特殊矩阵的压缩存储算法的实现
题目二十八、产品进销存管理系统 题目二十九、客户消费积分管理系统
题目三十、约瑟夫环
题目三十一、任意长的整数加法
题目三十二、广义表的应用
题目三十三、关键路径问题
题目三十四、构造可以使n个城市连接的最小生成树
题目三十五、神秘国度的爱情故事
题目三十六、利用Hash技术统计C源程序中关键字的频度
题目一、航空客运订票系统
通过此系统可以实现如下功能:
录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) ;
查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息: 当航班信息改变可以修改航班数据文件
要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
题目二、文章编辑
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
要求:
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;
题目三、宿舍管理查询软件
1. 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
A. 采用交互工作方式 B. 建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(分别用冒泡、选择、插入排序实现)
2. 查询菜单: (用二分查找实现以下操作)
C. 按姓名查询
D. 按学号查询
E. 按房号查询
打印任一查询结果并可以连续操作
题目四、校园导航系统
设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
题目五、散列法的实验研究
基本要求:
1、 设每个记录有下列数据项:电话号码、用户名、地址;
2、 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
3、 采用一定的方法解决冲突;
4、 查找并显示给定电话号码的记录;
5、 查找并显示给定用户名的记录。
进一步完成内容:
1、 设计不同的散列函数,比较冲突率;
2、 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
题目六、小型图书馆管理系统(链表的插入,排序,查询,删除)
对C语言软件开发有一定的认识,了解并掌握开发的各个流程,以及各功能代码的实现。创建一个图书馆管理系统,可进行还书(插入),排序,查找,借书(删除)操作。
【设计原理】
1.所有信息存储在一个带头结点的单向链表中,每个结点存储一条图书记录,即结构体(book),其中各域为:书号(number)、书名(title)、作者(writer)、定价(pricing)、出版社(publishinghouse),指针域(next)。
2.系统初始时图书记录为空,由用户录入信息,进行插入(包括创建),排序,查找,删除操作。
3.有两种排序算法可选:选择排序和直接插入排序,均由链表实现。
4.如输入有错,给出出错提示。
题目七、学生搭配问题
一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.
请设计一系统模拟动态地显示出上述过程,要求如下:
1、 输出每曲配对情况
2、 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值.
3、 尽量设计出多种算法及程序
4、 提示:用队列来解决比较方便.
题目八、敢死队问题
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。
题目九、教学计划编制问题
问题描述:
大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学
期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在
开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,
也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
基本要求:
(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。
(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
(3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。计划的表格格式自行设计。
测试数据:
学期总数:6;学分上限:10;该专业共开设12门课,课程号从C01到C12,学分顺序为2,3,4,3,2,3,4,4,7,5,2,3。先修关系如下:
课程编号 课程名称 先决条件
C1 程序设计基础 无
C2 离散数学 C1
C3 数据结构 C1,C2 C4 汇编语言
C1
C5 语言的设计和分析 C3,C4
C6 计算机原理 C11
C7 编译原理 C5,C3
C8 操作系统 C3,C6
C9 高等数学 无
C10 线性代数 C9
C11 普通物理 C9
C12 数值分析 C9,C10,C1
实现提示
可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。
题目十、活期储蓄帐目管理
活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:
能比较迅速地找到储户的帐户,以实现存款、取款记账;
能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
题目十一、通讯录的制作
模块要求:
第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:显示英文提示选单。
第三个模块——Quit()的功能是:退出选单。
第四个模块——Create()的功能是:创建新的通讯录。
第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块——List()的功能是:显示通讯录中的所有记录。;
设计要求: