数据结构课程设计题目及要求

发布 2022-10-06 03:54:28 阅读 9587

实验一~实验四任选一题;实验五~实验九任选一题。

实验一运动会分数统计。

一、 实验目的:

1)熟练掌握线性表的两种存储方式。

2)掌握链表的操作和应用。

3)掌握指针、结构体的应用。

4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。

二、 实验内容:

问题描述】参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

写一个统计程序产生各种成绩单和得分报表。

基本要求】产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

测试数据】对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。

实现提示】可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。

选作内容】允许用户指定某些项目可采取其他名次取法。

实验二停车场管理。

一、 实验目的:

1)熟练掌握栈顺存和链存两种存储方式。

2)掌握栈的基本操作及应用。

3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

二、 实验内容:

问题描述】设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。

基本要求】以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。

测试数据】设n=2,输入数据为:(a,1,5),(a,1,15),(a,3,20),(a,4,25),(a,5,30),(d,2,35),(d,4,40),(e,0,0)。其中:

a表示到达(arrival);d表示离去(departure);e表示输入结束(end)。

实现提示】需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:

汽车的牌照号码和进入停车场的时刻。

选作内容】1) 两个栈共享空间,思考应开辟数组的空间是多少?

2) 汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。

3) 汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。

4) 停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

实验三病人看病模拟程序。

一、 实验目的:

1)熟练掌握队列顺存和链存两种存储方式。

2)掌握队列的基本操作及应用。

3)以队列模拟病人排队,实现病人看病系统。

二、 实验内容:

问题描述】模拟病人到医院看病,选择看病的诊室排队看医生的情况。在病人排队过程中,主要重复两件事:

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

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

基本要求】要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:

1)显示可选择的各诊室。

2)排队——输入排队病人的病历号,加入到某诊室病人排队队列中。

3)就诊——该诊室病人排队队列中最前面的病人就诊,并将其从队列中删除。

4)查看各诊室排队——从队首到队尾列出所有的该诊室排队病人的病历号。

5)不再排队,余下依次就诊——从队首到队尾列出所有的排队病人的病历号及就诊诊室,并退出运行。

5)下班——退出运行。

实现提示】采用链式队列模拟病人去医院看病的过程。

实验四航空客运订票系统。

一、 实验目的:

1)熟练掌握线性表基本操作及应用。

2)熟练掌握队列基本操作及应用。

3)利用线性表和队列实现航空客运订票系统。

二、实验内容:

问题描述】

航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

基本要求】1)每条航线所涉及的信息有:终点站名、航班名、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);

2)作为示意系统,全部数据可以只放在内存中;

3)系统能实现的操作和功能如下:

1 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;

2 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;

3 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户。

测试数据】自行指定。

实现提示】两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且为了插入和删除方便,应以链表作为存储结构。由于预约人数无法预计,队列也应以链表作存储结构。

整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

选作内容】当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他航线情况。还可充分发挥自己的想象力,增加你的系统的功能和其他服务项目。

实验五文学研究助手。

一、 实验目的。

1) 熟练掌握串的基本操作及应用。

2) 熟练掌握串的匹配操作算法。

3) 基于串的存储和操作,实现对英文文章文字统计系统。

二、 实验内容。

问题描述】文学研究人员需要统计某篇英文**中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。

基本要求】英文**存于一个文本文件中。等待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。

测试数据】以你的c源程序模拟英文**,c语言的保留字集作为待统计的词汇集。

实现提示】约定**中的词汇一律不跨行。这样。每读入一行,就统计每个词在这行中的出现次数。

出现位置所在行的行号可以用链表存储。若某行中了现了不止一次,不必存多个相同的行号。如果读者希望达到选做部分(1)和(2)所提出的要求,则首先应把kmp算法改写成如下的等价形式,再将它推广到多个模式的情形。

i=1;j=1l;

while(i !=j !=

while (j !=0 &&i] !j = next[j];

// j = 0或 [i] =j]

j + i + 每次进入循环体,i只增加一次。

选作内容】1)模式匹配要基于kmp算法。

2)整个统计过程中只对**文字扫描一遍以提高效率。

3)假设**中的每个单词或者从行首开始,或者前置一个空格符。利用单词匹配特点另写一个高效的统计程序,与kmp算法统计程序进行效率比较。

4)推广到更一般的模式集匹配问题,并设待查模式串并可以跨行(提示:定义操作getachar)。

实验六哈夫曼编/译码器。

问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。

试为这样的信息收发站写一个哈夫曼的编/译码系统。

基本要求】一个完整的系统应具有以下功能:

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:印哈夫曼树(tree printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中。

数据结构课程设计题目及要求

题目 学生信息管理系统的开发与设计。1.基本内容。学生简历 学生信息的添加 学生信息的删除 学生信息的查询 有关信息的输出2.设计要求。以链表为存储结构,利用菜单进行功能选择,测试数据设计者自定。每个学生的数据项包含 学号 姓名 性别 班级 住址等。要求用c完成。要求和安排。1 问题分析和任务定义 ...

《数据结构》课程设计题目及要求

1 每位同学限选1题,并到所在自然班的班长处登记,同一题不超过4人 一个班之内 2 课程设计成绩分为5级 优秀 5分 良好 4分 中等 3分 及格 2分 不及格 1分 3 题目有难易和工作量大小之分 具体见题目后的 星级 为体现公平,请参见下表,请同学们结合自身情况选择题目。4 课程设计报告和源 严...

《数据结构》课程设计题目及要求

2013 2014学年第一学期 数据结构 课程设计题目及要求。本课程设计一共包括六道大题,请同学们根据自己的爱好选择其中一道大题。每道大题分为若干小题,请根据要求完成,并撰写课程设计报告 电子版 实习报告规范。实习报告的开头给出题目 班级 姓名 学号和完成日期,并包括以下内容 1 需求分析。说明调和...