2004《数据结构》课程设计题目及基本要求如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2004《数据结构》课程设计题目及基本要求如下:
一、试设计一个航空客运定票系统。基本要求如下:
1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、
乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
2、系统能实现的操作和功能如下:
1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。若需要,可登记排队候补;
3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
3、实现提示:两个客户名单可分别由线性表和队列实现。为查找方便,已订票
客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。由于预约人数无法预计,队列也应以链表作为存储结构。
二、校园导游咨询(为来访的客人提供各种信息服务)
1、基本要求:
1)设计下沙校园平面图,在校园景点选10个左右景点。以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一
条最短路径。
2、实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一
个无向网。顶点和边均含有相关信息。
三、停车场管理问题
[问题描述]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。
[实现要求]要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某
辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
[实现提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(‘A’,,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(‘E’,0,0)时结束。本题可用栈和队列来实现。
四、全国交通咨询模拟
【问题描述】处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。
(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。
(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。
(4)旅途中耗费的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
【实现提示】(1)对全国城市交通图和班车时刻表及飞机航班表的编辑,应该提供文件形式输入和键盘输入两种方式。飞机航班表的信息应包括:起始站的出发时间、终点站的到达时间和票价;列车时刻表则需根据交通图给出各个路段的详细信息,例如:对于从北京到上海的火车,需给出北京至天津、天津至徐州及徐州至各段的出发时间、到达时间和票价信息。
(2)以邻接表作交通图的存储结构,表示边的结点内除含有邻接点的信息外,包括交通工具、路程中消耗的时间和花费以及出发和到达的时间等多
项属性。
五、压缩器/解压器
【问题描述】
为了节省存储空间,常常需要把文本文件采用压缩编码的方式储存。例如:一个包含1000个x的字符串和2000个y的字符串的文本文件在不压缩时占用的空间为3002字节(每个x或每个y占用一个字节,两个字节用来表示串的结尾)。同样是这个文件,采用游程长度编码(run-length coding),可以存储为字符串1000x2000y,仅为10个字母,占用12个字节。若采用二进制表示游程长度(1000和2000)可以进一步节约空间。如果每个游程长度占用2个字节,则可以表示的最大游程长度为2*pow(16),这样,上例中的字符串只需要用8个字节来存储。当要读取编码文件时,需要对其进行解码。由压缩器(compressor)对文件进行编码,由解压器(decompressor)进行解码。
①(1)长度-游程编码的压缩/解压;+(2)LZW压缩/解压(散列);
②(1)长度-游程编码的压缩/解压;+(3)霍夫曼编码压缩/解压(霍夫曼树) 【基本要求】
要求选用二种压缩/解压策略实现压缩/解压器[(1)为必选]。输入的为本文文件(.txt),输出的为一种自定义的文件(.nz)。考虑当构成文本的字符集合为{a,b,c,……,z,0,1,2,…9}时,请用实例测试你的压缩/解压器。你的压缩器会不会出现抖动?(压缩后的文本比原来的还要大)。扩充构成文本的字符集合以便使它适应更一般的情况。
【实现提示】
LZW:由Lempel、Ziv和Welch这三位科学家所开发的技术。该方法把文本的字符串映射为编码,首先,为该文本中所有可能出现的字母分别分配一个代码。例如:要压缩的对象是aaabbbbbbbaabaaba,由a和b组成。为a分配代码0,为b 分配代码1。字符串和编码的关系被存储在字典中。
其相应的代码。若输入文件的下一个字符为c,则为pc分配下一个代码,并插入字典,这种策略称为LZW规则。相反,在解压时,编码表由压缩文件重新构造,LZW原则使这种重建成为可能。
如上例子,压缩时,文件中第一个在字典中出现的最长前缀是a, 输出其编码0,然后为字符串aa分配代码2,并插入到字典中。余下的字符串在字典中出现的最长前缀是aa,输出aa的对应代码2,同时为字符串aab分配代码3并将其插入到字典中。依次类推,由此,输出
解压时,要输入代码,然后用代码所表示的文本来替换这些代码。代码到文本的映射可按下面的方法重建:首先把分配给单一字母的代码插入到字典中。象前面一样,字典的入口为key-code对。然而此时是根据给定的代码(key)去寻找相应的入口(而不是根据文本Code)。压缩文件中的第一个代码对应于单一的字母,因此可以由该字母代替。对于压缩文件中的其他代码p,要考虑两种情况:1)在字典中;2)不在字典中。
在1)情况下,找到p对应的文本text(p)输出。并且,根据压缩原理可知,