《数据结构》实验指导书.doc_第1页
《数据结构》实验指导书.doc_第2页
《数据结构》实验指导书.doc_第3页
《数据结构》实验指导书.doc_第4页
《数据结构》实验指导书.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实验指导书吉林大学珠海学院计算机系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离散数学C1C3数据结构C1,C2C4汇编语言C1C5语言的设计和分析C3,C4C6计算机原理C11C7编译原理C5,C3C8操作系统C3,C6C9高等数学无C10线性代数C9C11普通物理C9C12数值分析C9,C10,C1实现提示可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。题目十、活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:能比较迅速地找到储户的帐户,以实现存款、取款记账;能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。题目十一、通讯录的制作模块要求:第一个模块主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。第二个模块Menu()的功能是:显示英文提示选单。第三个模块Quit()的功能是:退出选单。第四个模块Create()的功能是:创建新的通讯录。第五个模块Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。第六个模块Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。第七个模块Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。第八个模块Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。第九个模块List()的功能是:显示通讯录中的所有记录。;设计要求:每条信息至包含 :姓名(NAME )、性别(GENDER)、电话(TEL) 、城市(CITY)邮编(EIP)几项。作为一个完整的系统,应具有友好的界面和较强的容错能力题目十二、二叉排序树的实现用顺序和二叉链表作存储结构1) 以回车(n)为输入结束标志,输入数列L,生成一棵二叉排序树T;2) 对二叉排序树T作中序遍历,输出结果;3) 输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;题目十三、利用栈求表达式的值编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。主要功能描述如下:1、从键盘上输入表达式。2、分析该表达式是否合法:(1)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。(2)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。(3)若是其它字符,则返回错误信息。3、若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。程序中应主要包含下面几个功能函数:void initstack():初始化堆栈int Make_str():语法检查并计算int push_operate(int operate):将操作码压入堆栈int push_num(double num):将操作数压入堆栈int procede(int operate):处理操作码int change_opnd(int operate):将字符型操作码转换成优先级int push_opnd(int operate):将操作码压入堆栈int pop_opnd():将操作码弹出堆栈int caculate(int cur_opnd):简单计算+,-,*,/double pop_num():弹出操作数题目十四、走迷宫游戏程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。要求:老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;迷宫的墙足够结实,老鼠不能穿墙而过;正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;找出走出迷宫的所有路径,以及最短路径。利用序列化功能实现迷宫地图文件的存盘和读出等功能题目十五、顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。设有一元多项式Am(x)和Bn(x). Am(x)=A0+A1x1+A2x2+A3x3+ +Amxm Bn(x)=B0+B1x1+B2x2+B3x3+ +Bnxn请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)Bn(x)。题目十六、线索二叉树的应用要求:实现线索树建立、插入、删除、恢复线索的实现。题目十七、稀疏矩阵实现与应用要求:实现三元组,十字链表下的稀疏矩阵的下列应用。(1)稀疏矩阵的存储(2)稀疏矩阵加法(3)矩阵乘法(4)矩阵转置题目十八、树的应用要求:实现树与二叉树的转换的实现。以及树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。题目十九、图的遍历和生成树求解实现要求:先任意创建一个图;图的DFS,BFS的递归和非递归算法的实现最小生成树(两个算法)的实现,求连通分量的实现要求用邻接矩阵、邻接表、十字链表多种结构存储实现题目二十、排序综合利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。要求:至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。如果采用4种或4种以上的方法者,可适当加分。题目二十一、纸牌游戏任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?题目二十二、利用栈求表达式的值,可供小学生作业,并能给出分数。要求:建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价题目二十三、数制转换问题 任意给定一个M进制的数x ,请实现如下要求1)求出此数x的10进制值(用MD表示)2)实现对x向任意的一个非M进制的数的转换。3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。题目二十四、停车场问题停车场是一条可以停放n辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。 要求:以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现。题目二十五、学生成绩管理系统现有学生成绩信息文件1(1.txt),内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47. . . . 学生成绩信息文件2(2.txt),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77. . . . 试编写一管理系统,要求如下:1)实现对两个文件数据进行合并,生成新文件3.txt2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5)要求使用结构体,链或数组等实现上述要求.6)采用多种方法且算法正确者,可适当加分.题目二十六、哈夫曼编码/译码器【问题描述】设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。【基本要求】1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中) 2)分别采用动态和静态存储结构3)初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;4)编码:利用建好的哈夫曼树生成哈夫曼编码;5)输出编码;6)设字符集及频度如下表:字符 空格 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)译码功能;2)显示哈夫曼树;3)界面设计的优化。题目二十七、特殊矩阵的压缩存储算法的实现问题描述:对于特殊矩阵可以通过压缩存储减少存储空间。基本要求:1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值;2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值;题目二十八、产品进销存管理系统问题描述:针对某一种行业的库房的产品进销存情况进行管理。基本要求:采用一定的存储结构对库房的货品及其数量进行分类管理;可以进行产品类的添加、产品的添加、产品数量的添加;能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;题目二十九、客户消费积分管理系统问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:采用一定的存储结构进行客户信息的存储;对客户的信息可以进行修改、删除、添加;能够根据消费情况进行客户积分的计算;根据积分情况实行不同程度的打折优惠;题目三十、约瑟夫环问题描述:编号为1,2 n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。 基本要求:1、利用单循环链表作为存储结构模拟此过程;2、键盘输入总人数、初始报数上限值m及各人密码;3、按照出列顺序输出各人的编号。 题目三十一、任意长的整数加法问题描述:设计一个程序实现两个任意长的整数的求和运算。基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。题目三十二、广义表的应用由于广义表在结构上较线性表复杂得多,因此,广义表的运算也不如线性表简单。本设计要求实现的广义表的建立、查找、输出、取表头和取表尾以及求深度、求逆表等。本设计用一个主控菜单程序控制,共分为6个子系统。(1).建立广义表(2)输出广义表(3)结点的查找(4)求广义表表头(5)求广义表表尾(6)求广义表的深度题目三十三、关键路径问题问题描述:设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。基本要求:(1)对一个描述工程的AOE网,应判断其是否能够顺利进行。(2)若该工程能顺利进行,输出完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论