第一篇:数据结构大型实验题目-20111030
数据结构大型实验任务书使用班级:软件工程、计算机、网络工程、数字媒体
[大型实验基本要求]
1)原则上可以2-3位同学组成实验小组,进行分工合作,但必需保证每位组员都充分
参与实验过程,每位组员应对实验程序的结构、算法、主要技术完全掌握,方可参加实验
验收,在验收时可指定某位组员回答问题,若没回答正确,则会影响整组成绩。
2)每组可参考下面大型实验题目和要求,确定一道实验题目,共同设计开发。
3)大型实验时间从第8周开始至16周,要求在考试之前全部验收结束。原则上,申请大
型实验验收后,若实验没有达到规定的要求,不可再次申请验收,故请大家务必确认程序
正确(程序代码和运行结果)后,再申请验收。
[报告规范] 实习报告的开头应该给出题目、班级、姓名、学号、和完成日期,并包括以
下五个内容:
1. 实验内容分析:
明确实验题目目的,设计实验的基本数据结构、类、以及程序的基本流程,程序流程要求以程序流程图明确表示,类及类间关系需明确图示,并给出各函数之间的调用关系。
2.实验验证分析:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
3.调试分析
(1)讨论分析调试过程中的主要技术问题以及具体的解决方法(至少3个);
(2)技术难点分析(至少3个);
(3)印象最深刻的3个调试错误,及修正方法;
4.测试结果:
(1)展示程序的运行结果,包括输入和输出,分析数据的正确性;
(2)应用边界数据、或极端数据测试系统,分析结果的正确性。
5.提交的源代码需带注释,可提交电子版本。
[题目]
一、离散事件模拟
①银行业务模拟
【问题描述】客户业务分为两种,第一种是申请从银行得到一笔资金,即取款或者借款。第二种是向银行投入一笔资金,即存款或者还款。银行有两个服务窗口,相应的有两个队列。
客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行
现存资金总额而得不到满足,则立即排入第二个队等候,直至满足时才离开银行;否则业务
处理完后立即离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)
第二个队列中的客户,对能满足的申请者予以满足,不能满足的者重新排到第二个队列的队
尾。
注意:在此检查过程中,一旦银行的资金总额少于或者等于刚才第一个队列中最后一个客户
(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检
查(因为此时已不可能还有能满足者)转而继续接待第一个队列客户。任何时刻都只开一个
窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。
【基本要求】利用动态存储结构实现模拟。
【测试数据】一天营业开始时银行拥有的款额为10000(元),营业时间为600(分钟)。其
他模拟参量自定,注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客
户的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时
间很短。
【实现提示】事件有两类:到达银行的和离开银行。初始时银行现存资金总额为total。开始
营业后的第一个事件是客户到达,营业时间从0到closetime。到达事件发生时随机地设置
此客户的交易时间和距下一到达事件之间的时间间隔。每一个客户要办理的款额也是随机确
定的,用负值和正值分别表示第一类和第二类业务。变量total,closetime以及上述两个随
机量的上下界均交互地从终端读入,作为模拟参数。
两个队列和一个事件表均要用动态存储结构实现。需考虑设置离开事件,以及如何设
计第二个队列的存储结构以获得较高的效率。注意:事件表是按时间顺序有序的。
②航空客运订票系统
【问题描述】航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一
个航空客运订票系统,以使上述业务可以借助计算机来完成。
【基本要求】(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期
几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以
及等候替补的客户名单(包括姓名、所需的票量);
(2)全部数据应保存在外部文件中,可方便读取、更新;
(3)系统能实现的操作和功能如下:a-查询航线:根据旅客提出的终点站名输
出下列信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票;b-承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办
理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;c-承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票
手续,后人内查询该航班时候有人排队候补,首先询问排在第一的客户,若所退票额能满足
他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。当客户订票要求不能
满足时,系统可向客户提供到达同一目的地的其他航线的情况,需适当增加系统的功能。
【测试数据】自行拟定。
【实现提示】两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表
应按客户的身份证号码排序,并且,为插入和删除方便,应以链表作存储结构。由于预约人
数无法预计,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性
表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航
线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
③机场航空管制模拟
【问题描述】假设机场有一条跑道,每架飞机需花费一定时间着陆,花费一定时间起飞,飞
机的起降满足一定的概率。一般来讲,机场存在两个队列,一个等待着陆的飞机队列和一个
等待起飞的飞机队列,同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先
级。试编写程序模拟这个机场的运行。
【基本要求】使用队列和优先队列实现;要求可以变换起飞和着陆频率来模拟一天中的飞行
高峰期和空闲期;要求可以改变着陆和起飞时间以模拟不同的效果。
【实现提示】可以假设有一个每次前景一分钟的模拟时钟,对于每一分钟,产生两个随机数:
如果第一个随机数小于landingRate/60,那么一个“着陆到达”将发生并被添加到着陆队列
中;如果第二个随机数小于takeOffRate/60,那么一个“起飞到达”将发生并被添加到起飞
队列中。接着,检查跑道是否空闲。若空闲,首先检查着陆队列是否为非空,如果是,允许
第一架飞机着陆;否则,处理起飞队列。使程序能够计算平均队列长度及每架飞机花费在一
个队列中的平均时间。
*
二、图书管理系统
【问题描述】建立一个图书管理系统,所有图书信息需保存在外部文件中。要求能够实现基
本的图书信息数据检索,插入,删除,更新和排序等功能。要求系统具有良好的交互界面,图书检索功能可以提供多种方式检索:书名检索,作者名检索,出版社检索,ISBN信息
检索,已经组合检索,如作者名+出版社。图书信息包括:作者、书名、出版社、出版时间、ISBN、库存数量、已借出数量;学生可查阅自己的借阅情况,每个学生限制借阅5本图
书;学生可通过选择具体的图书实现还书功能。
【基本要求】实现图书信息管理和学生借阅管理
【实现提示】(1)可选择非线性结构二叉搜索树(Binary Search Tree)实现
(2)可选择非线性结构AVL树实现
(3)可选择哈希表(散列)Hashtable实现
* 注:本题目难度较大,完成实验的同学成绩会有一定的加分。
第二篇:数据结构大型实验题目-20111030
数据结构大型实验任务书
使用班级:软件工程、计算机、网络工程、数字媒体
[大型实验基本要求] 1)原则上可以2-3位同学组成实验小组,进行分工合作,但必需保证每位组员都充分参与实验过程,每位组员应对实验程序的结构、算法、主要技术完全掌握,方可参加实验验收,在验收时可指定某位组员回答问题,若没回答正确,则会影响整组成绩。
2)每组可参考下面大型实验题目和要求,确定一道实验题目,共同设计开发。3)大型实验时间从 数据结构大型实验任务书
使用班级:软件工程、计算机、网络工程、数字媒体
[题目]
一、离散事件模拟 ①银行业务模拟
【问题描述】客户业务分为两种,数据结构大型实验任务书
使用班级:软件工程、计算机、网络工程、数字媒体
【测试数据】自行拟定。
【实现提示】两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户的身份证号码排序,并且,为插入和删除方便,应以链表作存储结构。由于预约人数无法预计,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
③机场航空管制模拟
【问题描述】假设机场有一条跑道,每架飞机需花费一定时间着陆,花费一定时间起飞,飞机的起降满足一定的概率。一般来讲,机场存在两个队列,一个等待着陆的飞机队列和一个等待起飞的飞机队列,同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先级。试编写程序模拟这个机场的运行。【基本要求】使用队列和优先队列实现;要求可以变换起飞和着陆频率来模拟一天中的飞行高峰期和空闲期;要求可以改变着陆和起飞时间以模拟不同的效果。【实现提示】可以假设有一个每次前景一分钟的模拟时钟,对于每一分钟,产生两个随机数:如果
第三篇:软件项目管理实验题目(0)
题目1基于空间数据的村镇社区综合管理信息系统一、背景
党的十六届五中全会提出了建设社会主义新农村的重大历史任务。为落实这一重大历史任务,中共中央从2006年至2010年连续下发的5个中央一号文件都是关于三农的,其核心思想就是通过城市支持农村、工业反哺农业等一系列“多予、少取、放活”的政策措施,实现城乡协调发展,让城乡居民共同分享改革发展成果,全面推进社会主义新农村建设。
为深入贯彻落实中央做出的建设社会主义新农村的重大决策,国家测绘局印发了《关于做好社会主义新农村建设测绘保障服务的意见》(国测办字[2006]10号)和《关于贯彻落实做好社会主义新农村建设测绘保障服务工作意见的通知》(国测国字[2006]24号),明确指出测绘作为经济建设和社会发展的一项基础性、前期性工作,在社会主义新农村建设中具有重要的保障作用,要立足当前,着眼长远,统筹规划,科学安排,充分发挥测绘高新技术和地理信息数据资源优势,找准切入点和着力点,把握工作重点,提高服务意识,创新服务方式,切实做好社会主义新农村建设测绘保障工作。
乡镇是我国最基层的行政管理单位,是农村经济、社会、文化、生活乃至整个面貌的重要载体,是构建农村和谐社会的基地。全面建设小康社会的重点、难点在农村,推进乡镇建设是本世纪头20年如期实现全面建设小康社会宏伟目标的关键,已被纳入了国家经济社会发展的宏观规划。中共中央、国务院关于2009年《促进农业稳定发展农民持续增收的若干意见》中明确要求“推进城乡经济社会发展一体化,发展农村信息化,推进文化信息资源共享”。中共中央、国务院关于《2006-2020年国家信息化发展战略》中提出我国信息化发展的首位战略重点是“推进面向‘三农’的信息服务。
在此背景下,山东省国土资源厅根据国家测绘地理信息局新农村建设测绘保障服务示范工作的要求,结合山东省新农村建设实际,选取了《数字乡镇地理信息综合支撑平台建设及应用示范》项目作为山东省2011年新农村建设测绘保障服务示范项目,并报请国家测绘地理信息局批准纳入了2011年新农村建设测绘保障服务示范项目。
本项目的主要任务是搭建数字乡镇地理信息综合支撑平台、研发村镇社区综合管理信息系统,为发展现代农业、统筹城乡经济社会发展、解决“三农”问题和乡镇党政领导实施科学决策提供依据。本项目的推广应用,可为农民提供及时、高效的信息服务,对于贯彻国家“信息强政、信息兴业、信息惠民”和新农村建设方针,实现小农户与大社会的对接,缩小城乡“数字鸿沟”,推动农村城镇化发展和构建和谐社会具有重大意义。
本项目选取德州市禹城市市中街道办作为示范区。禹城市市中街道办事处位于行政街东首,迎宾路以东。京沪铁路和京福、青银高速公路及101、316省道纵穿全境,具有得天独厚的区位和交通优势。辖区面积27.15万亩,总人口13万,其中农业人口6万,辖50个社区(村)和6个居委会。该办事处大力发展优质高效农业,2010年底全处农副产品加工业户发展到150家,瓜菜面积稳定在5万亩,在已有“嘎子”牌蔬菜、“稼春”牌富硒甜玉米等地理商标的基础上,新增地理商标5件。
禹城市市中街道办事处从改善居住环境入手,着力打造和谐民生。其中:2010年进行了夏季一、二期、寨子一期、三友马庄一至三期和红布张整体建设及城郊韩、杨城子社区拆迁建设,并启动骇河一期的规划开工;2011年—2012为二期,进行任万、天宫、石屯、寨子二期、三友马庄四至五期、杨城子等社区并居建设;搭建起“农民向市民转变、农村向城市靠拢”的平台载体,有力地推进了城乡一体化进程。
二、总体目标
本项目充分利用现有地理信息资源,对各类基础地理信息和专题信息数据进行整合入库,搭建数字乡镇地理信息综合支撑平台,并结合示范乡镇社区中心工作和经济社会发展实际需求,组织建设村镇社区综合管理信息系统示范项目。实现对治安、医疗、商业服务、农事村办等社区管理过程中的专题信息的集中管理,建立基于互联网和地理空间信息的便民服务平台。
三、建设内容
结合项目示范区实际情况,在借鉴国内外有关技术积累和有益经验的基础上,采集示范区基础地理信息和专题信息,研究开发乡镇综合信息数据库系统,构建数字乡镇地理信息综合支撑平台,研发村镇社区综合管理信息系统,并在禹城市市中街道办50个社区应用示范。
题目2基于空间数据的村镇土地流转管理信息系统一、背景
党的十六届五中全会提出了建设社会主义新农村的重大历史任务。为落实这一重大历史任务,中共中央从2006年至2010年连续下发的5个中央一号文件都是关于三农的,其核心思想就是通过城市支持农村、工业反哺农业等一系列“多予、少取、放活”的政策措施,实现城乡协调发展,让城乡居民共同分享改革发展成果,全面推进社会主义新农村建设。
为深入贯彻落实中央做出的建设社会主义新农村的重大决策,国家测绘局印发了《关于做好社会主义新农村建设测绘保障服务的意见》(国测办字[2006]10号)和《关于贯彻落实做好社会主义新农村建设测绘保障服务工作意见的通知》(国测国字[2006]24号),明确指出测绘作为经济建设和社会发展的一项基础性、前期性工作,在社会主义新农村建设中具有重要的保障作用,要立足当前,着眼长远,统筹规划,科学安排,充分发挥测绘高新技术和地理信息数据资源优势,找准切入点和着力点,把握工作重点,提高服务意识,创新服务方式,切实做好社会主义新农村建设测绘保障工作。
乡镇是我国最基层的行政管理单位,是农村经济、社会、文化、生活乃至整个面貌的重要载体,是构建农村和谐社会的基地。全面建设小康社会的重点、难点在农村,推进乡镇建设是本世纪头20年如期实现全面建设小康社会宏伟目标的关键,已被纳入了国家经济社会发展的宏观规划。中共中央、国务院关于2009年《促进农业稳定发展农民持续增收的若干意见》中明确要求“推进城乡经济社会发展一体化,发展农村信息化,推进文化信息资源共享”。中共中央、国务院关于《2006-2020年国家信息化发展战略》中提出我国信息化发展的首位战略重点是“推进面向‘三农’的信息服务。
在此背景下,山东省国土资源厅根据国家测绘地理信息局新农村建设测绘保障服务示范工作的要求,结合山东省新农村建设实际,选取了《数字乡镇地理信息综合支撑平台建设及应用示范》项目作为山东省2011年新农村建设测绘保障服务示范项目,并报请国家测绘地理信息局批准纳入了2011年新农村建设测绘保障服务示范项目。
本项目的主要任务是搭建数字乡镇地理信息综合支撑平台、研发村镇土地流转管理信息系统,为发展现代农业、统筹城乡经济社会发展、解决“三农”问题和乡镇党政领导实施科学决策提供依据。本项目的推广应用,可为农民提供及时、高效的信息服务,对于贯彻国家“信息强政、信息兴业、信息惠民”和新农村建设方针,实现小农户与大社会的对接,缩小城乡“数字鸿沟”,推动农村城镇化发展和构建和谐社会具有重大意义。
本项目选取滨州市邹平县长山镇作为示范区。长山镇位于滨州市邹平县最东端,版图面积106平方公里,辖110个行政村,7.2万人口,耕地面积74平方公里。长山镇历史悠久,经济发达,是省政府公布的首批中心镇,先后被授予全国小城镇建设试点镇、全国小康建设明星乡镇、全国创建文明村镇工作先进村镇、山东省节能环保产业基地、省卫生镇、省文明镇、山东省发展低碳经济十佳乡镇。
“十一五”期间,长山镇加快特色品牌农业发展。坚持抓基地、带农户,抓提升、促增收,深入开展“一村一品、百村行动”,全年新增特色专业村6个,专业合作社2个,特菜、食用菌大棚152个,种养殖基地7个。总投资1亿元的众康生态农业园开工建设,投资300万元完成中王、苑城万亩方田建设。“长山山药”通过国家地理标志证明商标认证,并荣获世界“蓝天杯”十大标志专用品牌称号,长山镇被确定为中华饮食文化精品种植基地和全市林水会战先进镇。“十二五”期间,长山镇继续大力实施城镇带动战略,加快推进镇村一体化进程。
二、总体目标
本项目充分利用现有地理信息资源,对各类基础地理信息和专题信息数据进行整合入库,搭建数字乡镇地理信息综合支撑平台,并结合基层土地管理的实际情况,搭建贯穿土地流转各环节的管理系统,促进土地资源合理、高效流转。
三、建设内容
结合项目示范区实际情况,在借鉴国内外有关技术积累和有益经验的基础上,采集示范区基础地理信息和专题信息,研究开发乡镇综合信息数据库系统,构建数字乡镇地理信息综合支撑平台,研发村镇土地流转管理信息系统,并在邹平县长山镇110个行政村应用示范。题目3基于空间数据的村镇政务管理信息系统
乡镇政务管理信息系统以基于空间数据的乡镇综合信息服务平台为基础,通过地理信息系统对乡镇的基础空间地理数据和非空间数据进行有序的管理,为科学地建设、管理乡镇提供规范、持续的信息,实现乡镇各部门之间协同办公以及机关内部的公文流转、电子公告、内部交流等功能,使乡镇政府日常办公信息化、自动化和标准化,为政府与公众的沟通交流搭建一个平台,可极大地提高机关办公效率。乡镇政务管理系统的应用可为乡镇的政务管理提供科学、先进、高效、透明的现代化管理手段。
题目4基于空间数据的村镇土地管理信息系统
建设社会主义新农村是党的十六届五中全会确定的重大历史任务。中共中央、国务院《关于推进社会主义新农村建设的若干意见》(中发[2006]1号)和省委、省政府《关于贯彻<中共中央、国务院关于推进社会主义新农村建设的若干意见>的实施意见》(鲁发[2006]1号)明确了新农村建设的总体要求和目标任务。测绘作为经济建设和社会发展的一项基础性、前期性工作,在社会主义新农村建设中具有重要的保障作用。
十分珍惜、合理利用土地和切实保护耕地是我国的基本国策。温家宝总理在2007年政府工作报告中指出“在土地问题上,我们绝不能犯不可改正的历史性错误,遗祸子孙后代”,并明确提出“一定要守住全国耕地不少于18亿亩这条红线”。因此,保护耕地特别是保护基本农田直接关系到国家粮食安全、经济发展、社会稳定和广大农民的切身利益,是国土资源管理工作的首要任务。另外,2008年中共十七届三中全会通过的《中共中央关于推进农村改革发展若干重大问题的决定》中提出允许农民多种形式流转土地承包权,由此如何通过有效机制规范土地流转成为农村土地管理的新型课题。随着我国经济建设的快速发展和人口的持续增长,人地矛盾将进一步加剧,必须加强对村镇土地的管理。而传统低效的管理方式已不能满足土地资源动态管理的需要,迫切要求采用现代化的手段,实施科学有效的管理,以实现土地资源管理信息化。
目前,新农村建设正在有条不紊地开展。建立有效的土地管理综合信息服务平台,对促进我国农业发展、保障农民增收、维护农村稳定、服务新农村建设具有十分重要的意义。对于实现党的十六届五中全会提出的“生产发展、生活宽裕、乡风文明、村容整洁,管理民主”的建设社会主义新农村的建设目标具有举足轻重的作用。本项目的建设,可以充分发挥现代信息技术和地理信息数据资源优势,为村镇土地管理提供一个更优化的平台,为全省推广积累经验。
土地管理信息系统(LIS)是土地规划和管理定量化、科学化以及对土地信息进行快速查询、分析和更新的技术手段和方法,并为决策提供辅助支持[2]。作为数字村镇课题重要组成部分的村镇土地管理信息系统,主要涉及土地利用管理、耕地保护、地籍管理、土地规划、执法监察、网站维护等几个方面,对于促进城乡一体化管理,村镇土地合理、有序、高效利用具有重要意义。
题目5洪水资源优化调度系统
水环境是地球资源环境的重要组成部分,是人类社会赖以生存的不可替代的重要基础,在保障人类社会可持续发展中具有不可替代的作用。但随着人口的不断增加和社会经济的迅速发展,水资源短缺已经成为水环境问题的一个非常突出的问题。由于人类社会对水资源的需求越来越大,水资源供给越来越呈现出严重短缺的局面,充分利用降水(包括降雨和降雪)成为解决水资源短缺的重要途径。
我国地处北半球欧亚大陆的东南部,由于受季风气候的影响,降水主要集中在夏秋两季。在我国大部分地区,每年的6月份到9月份属于汛期,只有四个月的时间,但这四个月的降水量通常却占到全年降水量的60%到80%,连续丰水年或连续枯水年的现象在我国大部分地区都较为常见。由于汛期降雨产生的大部分地表径流形成了洪水,使得洪水成为水资源的重要组成部分。但由于降雨量和径流量在不同年份和不同的地理位置的变化较大,使得我国水资源供需矛盾更加突出。就山东省而言,由于人口众多,经济社会发展迅速,水资源需求加大,现有水资源已远远不能满足需要,呈现严重短缺,并逐渐加剧。在较长的时期内,防洪安全、水资源安全和生态系统安全,是制约我省经济社会进一步向小康目标发展的瓶颈因素。这种水资源日趋匮乏的局面,要求我们必须更有效地利用洪水资源。
在优先保证防洪安全的前提下,利用防洪工程和先进技术手段,实施洪水优化调度,充分利用洪水资源,减少深层地下水的开采,是解决我省水资源矛盾和维护生态系统安全的重要途径之一。尤其对病险防洪工程,实施信息化、科学化调度等非工程安全措施,是保障防洪安全的重要方法。通过实施库河联网防洪调度,流域防洪能力将明显提高,目前部分流域已经具备了实施洪水优化调度的条件。我省的水库大坝、河道堤防等主要水利工程保护着2100多万人口的安全,部分工程还同时承担着城市、乡村生活供水任务。
因此,在水资源日趋匮乏的情况下,开发研究洪水资源优化调度系统,利用先进的技术手段和科学的管理方法,最大限度减轻洪水灾害,同时提高洪水资源利用率,提高防洪工程的综合管理水平,实现传统水利向现代水利、可持续发展水利转变具有重大的经济、社会和生态效益。为此, 根据我省防洪工程实际运用情况和流域、水库特点,提出“洪水资源优化调度系统开发研究”课题。在确保防洪安全的前提下,提高洪水资源利用率,为领导科学决策提供坚实的依据,实现防灾兴利的最大化目标。
水库洪水资源优化调度系统主要完成五大功能:基本信息管理、水雨情遥测、洪水预报、洪水调度、综合信息查询。
1、基本信息管理
对与洪水预报、调度等相关的一系列数据、参数、方法与模型进行存储与管理。
2、雨水情遥测
雨水情遥测是实时洪水预报的基础,实时收集库区降雨、水位、流量等水文资料数据,加工处理后保存到数据库,并能根据实测数据,自动生成时段或年月水位信息、降水信息、流量信息等统计数据,供查询和洪水预报使用。
3、洪水预报
洪水预报子系统能够根据采集的实时雨水情、工情等信息,对未来将发生的洪水做出洪水总量、洪峰流量、峰现时间以及洪水过程等情况的预测;能够参考气象预报成果和专家经验以及未来的可能雨情变化,做出洪水变化的趋势预测与分析。
1、根据流域实时降雨过程或流域周围降雨过程,运用洪水预报模型,推算出水库来水过程线,并存入相应数据库,以供洪水调度使用。可根据数据库中已有的或实时采集的降雨资料(遥测系统提供的资料),自动进行入库洪水预报作业,也可人工置数,干预洪水预报过程。
2、在地理信息系统平台下,通过遥感图像获取流域的地貌特征信息;研究库区的地貌特征、地质条件、温度等因素与洪水形成的关系,建立洪水预报空间信息模型;同时以采集的实时雨量、蒸发量、水库水位等信息为依据研究修正洪水预报空间信息模型。
3、实际防洪工作中,由于水文现象本身的复杂性和不确定性,很难保证每一次洪水预报都符合要求。系统能够根据输入的地面实际降雨、净雨过程和汇流模型,对洪水预报成果进行实时修正。
4、洪水调度
洪水调度系统按照规定的水库调度原则和控制指标,综合考虑水库来水、蓄水和泄水以及上下游淹没等情况,生成规则调度方案和优化调度方案;并且可以结合决策者的经验,以人机交互方式修改洪水调度方案,对多个洪水调度方案进行优选,提出在保证水库安全情况下,对上下游影响最小的最优调度方案,为防洪决策提供技术支持。该子系统主要完成洪水调度方案生成、方案评价、方案管理、调度成果查询等功能。
5、综合信息查询
在综合数据库的支持下,构建基于Web的综合信息查询系统,提供基于Web的实时水(雨)情、工情状况和汛情等防汛抗旱相关信息的发布。查询的信息主要包括:(1)预报相关信息
主要包括各种产汇流模型参数的查询和修改;时段雨量数据、日雨量数据、Pa值和各雨量站有效性的查询和修改;各水库实时水位的查询和修改;各水文分区雨量站的维护。另外还包括预报方案成果的保存、查询、输出等功能。
(2)调度相关信息
主要包括水库基本资料的查询;水库特征水位的查询;水库预报与实际流量过程的频率查询;水库调度规则查询;泄流设备的水位-流量关系查询和修改;水库水位-库容关系查询和修改。另外还包括调度方案成果的保存、查询、输出等功能。
(3)基于GIS的信息查询
主要包括实时水雨情信息图上查询和标注,地图放大、缩小及漫游,预报调度成果查询。
要求:
从以上题目任选一个,完成项目的需求分析、方案设计(包括项目概述、总体目标、建设内容、提交成果、技术路线、建设周期和进度安排、组织实施方案、经费预算)。
第四篇:数据结构课程设计题目.
数据结构课程设计题目
1.运动会分数统计(限1 人完成)
任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
功能要求:
1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;
4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5)数据存入文件并能随时查询
6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称
输出形式:有合理的提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用
1、全部合法数据;
2、整体非法数据;
3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
2.飞机订票系统(限1 人完成)
任务:通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
3.文章编辑(限1 人完成)
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”(3)输出删除某一字符串后的文章;
4.宿舍管理查询软件(限1 人完成)
1)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: A.采用交互工作方式
B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单:(用二分查找实现以下操作)A.按姓名查询
B.按学号查询
C.按房号查询
3)打印任一查询结果(可以连续操作)
5.校园导航问题(限1 人完成)
设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
6.教学计划编制问题(限1 人完成)
设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
7.散列法的实验研究(限1 人完成)
散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。两者是影响查询算法性能的关键因素。对于几种典型的散列函数构造方法,做实验观察,不同的解决冲突方法对查询性能的影响。
8.图书借阅管理系统(限1 人完成)
主要分为两大功能:
1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息);
9.学生成绩管理(限1 人完成)
实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。
10.活期储蓄帐目管理(限1 人完成)
活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求: 1)能比较迅速地找到储户的帐户,以实现存款、取款记账; 2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
11.二叉排序树的实现(限1 人完成)
用顺序和二叉链表作存储结构
1)以回车('n')为输入结束标志,输入数列L,生成一棵二叉排 序树T; 2)对二叉排序树T作中序遍历,输出结果;
3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;
12.最小生成树问题(限1 人完成)
设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。
13.通讯录的制作(限1 人完成)
设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。设计内容:本系统应完成一下几方面的功能: 1)输入信息——enter();2)显示信息———display();3)查找以姓名作为关键字 ———search();4)删除信息———delete();5)存盘———save();6)装入———load();设计要求:
1)每条信息至包含 :姓名(NAME)街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项 2)作为一个完整的系统,应具有友好的界面和较强的容错能力 3)上机能正常运行,并写出课程设计报告
14.哈夫曼编码/译码器(限1 人完成)【问题描述】
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。【基本要求】
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)界面设计的优化。
15.图书管理系统(限1 人完成)【问题描述】
设计一个计算机管理系统完成图书管理基本业务。【基本要求】
1)每种书的登记内容包括书号、书名、著作者、现存量和库存量; 2)对书号建立索引表(线性表)以提高查找效率; 3)系统主要功能如下:
*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; *借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; *归还:注销对借阅者的登记,改变该书的现存量。【进一步完成内容】 1)系统功能的进一步完善; 2)索引表采用树表。3)设计内容 4)程序流程图 5)源程序
6)软件测试报告(包括所用到的数据及结果)
16.散列表的设计与实现(限1 人完成)【问题描述】
设计散列表实现电话号码查找系统。【基本要求】
1)设每个记录有下列数据项:电话号码、用户名、地址;
2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 3)采用一定的方法解决冲突; 4)查找并显示给定电话号码的记录; 5)查找并显示给定用户名的记录。【进一步完成内容】 1)系统功能的完善;
2)设计不同的散列函数,比较冲突率;
3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
17.顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。(限1 人完成)
设有一元多项式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)结果M(x)中无重复阶项和无零系数项; 4)要求输出结果的升幂和降幂两种排列情况
18.利用栈求表达式的值,可供小学生作业,并能给出分数。(限1 人完成)
要求:建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价
19.简易文本编辑器(限1 人完成)要求:
1)具有图形菜单界面;
2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除 3)可正确存盘、取盘; 4)正确显示总行数。
20.二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。(限1 人完成)
要求:遍历的内容应是千姿百态的。
树与二叉树的转换的实现。以及树的前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。
要求:遍历的内容应是千姿百态的。
21.学生搭配问题(限1 人完成)
一班有m个女生,有n个男生(m不等于n),现要开一个舞会.男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下: 1)输出每曲配对情况
2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值.3)尽量设计出多种算法及程序,可视情况适当加分
提示:用队列来解决比较方便.22.猴子吃桃子问题(限1 人完成)
有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:
1)采用数组数据结构实现上述求解 2)采用链数据结构实现上述求解 3)采用递归实现上述求解
23.数制转换问题(限1 人完成)
任意给定一个M进制的数x,请实现如下要求 1)求出此数x的10进制值(用MD表示)2)实现对x向任意的一个非M进制的数的转换。
3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。
24.排序综合(限1 人完成)
利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。要求:
1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。
2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。3)如果采用4种或4种以上的方法者,可适当加分。
25.学生成绩管理系统(限1 人完成)现有学生成绩信息文件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.txt 2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5)要求使用结构体,链或数组等实现上述要求.6)采用多种方法且算法正确者,可适当加分.26.图的遍历的实现(限1 人完成)要求:
1)先任意创建一个图;
2)图的DFS,BFS的递归和非递归算法的实现 3)要求用有向图和无向图分别实现
4)要求用邻接矩阵、邻接表多种结构存储实现
27.线索二叉树的应用(限1 人完成)
要求:实现线索树建立、插入、删除、恢复线索的实现。
28.稀疏矩阵应用(限1 人完成)
要求:实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。(1)稀疏矩阵的存储(2)稀疏矩阵加法(3)矩阵乘法(4)矩阵转置
29.树的应用(限1 人完成)
要求:实现树与二叉树的转换的实现。以及树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。
30.文本文件单词的检索与计数 设计要求与分析:
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。(1).建立文本文件(2)给定单词的计数
(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构 ① 头文件包含 ② 菜单选项包含
建立文件、单词定位、单词计数、退出程序 ③ 选择1-4执行相应的操作,其他字符为非法。
31.任意长的整数加法(限1 人完成)
问题描述:设计一个程序实现两个任意长的整数的求和运算。
基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。
32.二叉平衡排序树(限1 人完成)
问题描述:从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。最终要把创建好的二叉排序树转换为二叉平衡排序树。基本要求:1.创建(插入、调整、改组)
2.输出
33.串的查找和替换(限1 人完成)
问题描述:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。
34.约瑟夫环(限1 人完成)
问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。
基本要求:
1、利用单循环链表作为存储结构模拟此过程;
2、键盘输入总人数、初始报数上限值m及各人密码;
3、按照出列顺序输出各人的编号。
35.构造可以使n个城市连接的最小生成树(限1 人完成)
问题描述:给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求:
1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。
2、表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)
3、最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。
36.客户消费积分管理系统(限1 人完成)
问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:
1.采用一定的存储结构进行客户信息的存储; 2.对客户的信息可以进行修改、删除、添加; 3.能够根据消费情况进行客户积分的计算; 4.根据积分情况实行不同程度的打折优惠;
37.产品进销存管理系统(限1 人完成)
问题描述:针对某一种行业的库房的产品进销存情况进行管理。基本要求:
1.采用一定的存储结构对库房的货品及其数量进行分类管理; 2.可以进行产品类的添加、产品的添加、产品数量的添加;
3.能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;
38.特殊矩阵的压缩存储算法的实现(限1 人完成)问题描述:对于特殊矩阵可以通过压缩存储减少存储空间。基本要求:
1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值; 2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值;
39.算术表达式的求解(限1 人完成)
问题描述:给定一个算术表达式,通过程序求出最后的结果。基本要求:
1. 从键盘输入要求解的算术表达式; 2. 采用栈结构进行算术表达式的求解过程; 3. 能够判断算术表达式正确与否; 4. 对于错误表达式给出提示; 5. 对于正确的表达式给出最后的结果;
40.实时监控报警系统(限1 人完成)问题描述:建立一个报警和出警管理的系统 基本要求:
1.采用一定的存储结构存储报警信息,要求有内容、时间; 2.有一次的出警就应该在待处理的信息中删除这条信息; 3.记录出警信息;
4.待处理信息过多时会发出警告;
41.车厢调度(限1 人完成)
问题描述:假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,4。设计一个程序,求出所有可能由此输出的长度为4的车厢序列。
42.迷宫问题(栈)问题描述:
以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。基本要求:
首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向,如:对于下列数据的迷宫,输出的一条通路为:(1,1,1),(1,2,2),(3,2,3),(3,1,2),…。测试数据:
迷宫的测试数据如下:左下角(1,1)为入口,右下角(8,9)为出口。实现提示: 计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设的迷宫没有通路。
可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(n,n)。为处理方便起见,可在迷宫的四周加一圈障碍。对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。选做内容:
(1)编写递归形式的算法,求得迷宫中所有可能的通路;(2)以方阵形式输出迷宫及其通路。43.迷宫问题(队列)(同上)44二叉搜索树:各种搜索树效率比较 题目要求:
本题目要求对普通的二叉排序树、AVL树分别实现制定操作,并分析比较这两种不同数据结构对应的一系列插入和删除操作的效率。要求测试对N个不同整数进行下列操作的效率:(1)按递增顺序插入N个整数,并按同样顺序删除;(2)按递增顺序插入N个整数,并按相反顺序删除;(3)按随机顺序插入N个整数,并按随机顺序删除;
要求N从1000到10000取值,并以数据规模N为横轴,运行时间为纵轴,画出3种不同数据结构对应的操作效率比较图。
45.病毒测试程序 本题的任务是:
当整个网络被感染后,计算有多少台机器被某个特定变种所感染。输入要求:
输入由若干组测试数据组成。
每组数据的第1行包含2个整数M和N(1≤M,N≤500),接下来是一个M*N的矩阵表示网络的初始感染状态,其中的正、负整数的意义如题目描述中所定义。
下面一行给出一个正整数Q,是将要查询的变种的个数。接下去的Q行里,每行给出一个变种的类型。当M或N为0时,表示全部测试结束,不要对该数据做任何处理。输出要求:
对每一组测试,在一行里输出被某个特定变种所感染的机器数量。
46关键路径问题(限1 人完成)
问题描述:设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。基本要求:
(1)对一个描述工程的AOE网,应判断其是否能够顺利进行。
(2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。
47.神秘国度的爱情故事
输入要求:输入由若干组测试数据组成。
每组数据的第1行包含一正整数N(1≤N≤50000),代表神秘国度中小村的个数,每个小村即从0到N-1编号。接下来有N-1行输入,每行包含一条双向道路的两端小村的编号,中间用空格分开。之后一行包含一正整数M(1≤M≤500000),代表着该组测试问题的个数。接下来M行,每行给出A,B,C三个小村 的编号,中间用空格分开。当N为0时,表示全部测试结束,不要对该数据做任何处理。
输出要求:对每一组测试给定的A,B,C,在一行里输出答案,即:如果C在A和B之间的路径上,输出Yes,否则输出No。
48.并查集:检查网络
题目要求:给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传输。请写出程序判断:任意指定两台计算机,它们之间是否可以进行文件传输?
输入要求:输入若干测试数据组成。对于每一组测试,第1行包含一个整数N(≤10000),即网络中计算机的总台数,因而每台计算机可用1到N之间的一个正整数表示。接下来的几行输入格式为I C1 C2或者 C或者C C1C2或者S,其中C1和C2是两台计算机的序号,I表示在C1和C2间输入一条连线,C表示检查C1和C2间是否可以传输文件,S表示该组测试结束。当N为0时,表示全部测试结束,不要对该数据做任何处理。
输出要求:对每一组C开头的测试,检查C1和C2间是否可以传输文件,若可以,则在一行中输出“yes”,否则输出“no”。
当读到S时,检查整个网络。若网络中任意两机器间都可以传输文件,则在一行中输出“The network is connected.”,否则输出“There are k components.”,其中k是网络中连通集的个数。两组测试数据之间请输出一空行分隔。
49.广义表的应用
由于广义表在结构上较线性表复杂得多,因此,广义表的运算也不如线性表简单。本设计要求实现的广义表的建立、查找、输出、取表头和取表尾以及求深度、求逆表等。本设计用一个主控菜单程序控制,共分为6个子系统。(1).建立广义表(2)输出广义表(3)结点的查找(4)求广义表表头(5)求广义表表尾(6)求广义表的深度
50.网络流:宇宙旅行 题目要求:
在走遍了地球上的所有景点以后,旅游狂人开始计划他的宇宙旅行项目。经过谨慎调查,他目前掌握了一张各卫星空间站可以临时容纳的旅客人数列表。但旅客从一个星球飞往另一个星球时,需要在若干卫星空间站临时停靠中转,而这些空间站不能接待任何旅客驻留,旅客必须立刻转乘另一艘飞船离开,所以空间站不能接待超过自己最大容量的旅客流。为了估计预算,现在旅游狂人需要知道终点星球的接待站应该设计多大容量,才能使得每艘飞船在到达时都可以保证让全部旅客下船。输入要求:
输入若干组测试数据组成。
每组测试数据的第1行包含旅行的起点星球和终点星球的名称和一个不超过500的正整数N(N为0标志全部测试结束,不要对该数据做任何处理)。
接下来的N行里,数据格式为:sourcei capacityi,其中sourcei和destinationi是卫星空间站的名称或起点、终点星球的名称,正整数capacityi是飞船从sourcei到destinationi一次能运载的最大旅客流量。每个名称是由A~Z之间三个大写字母组成的字符串,例如:ZJU。测试数据中不包含任何到达起点星球的信息以及任何从终点星球出发的信息。输出要求:
对每一组测试,在一行里输出终点星球接待站应具有的最小容量,使得每艘飞船在到达时都可以保证让全部旅客下船。
第五篇:数据结构课程设计题目
数据结构课程设计题目 以下8个题目任选其一。
1.排序算法比较
利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并且(1)统计每一种排序上机所花费的时间。
(2)统计在完全正序,完全逆序情况下记录的比较次数和移动次数。(3)比较的指标为关键字的比较次数和记录的移动次数(一次记录交换计为3次移动)。
(4)对结果作简单分析,包括对各组数据得出结果波动大小的解释。2.图的深度遍历
对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用堆栈的五种基本运算(清空堆栈、压栈、弹出、取栈顶元素、判栈空)实现图的深度优先搜索遍历。画出搜索顺序示意图。3.图的广度遍历
对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索遍历。画出搜索顺序示意图。4.二叉树的遍历
对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。画出搜索顺序示意图。5.链表操作
利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。画出搜索顺序示意图。6.一元稀疏多项式简单计数器(1)输入并建立多项式
(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。用带头结点的单链表存储多项式。测试数据:
(1)(2x+5x8-3.1x11)+(7-5x8+11x9)(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)7.实现两个链表的合并 基本功能要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。
(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线性表C,使得:
当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm 当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn 输出线性表C:
(1)用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。测试数据:
(1)A表(30,41,15,12,56,80)
B表(23,56,78,23,12,33,79,90,55)
(2)A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)8.哈夫曼编码的实现与应用
(1)从文件中读入任意一篇英文短文(至少含3000个字符,文件为ASCII编码的文本文件)
(2)统计不同字符在文章中出现的频率(空格、换行、标点等也按字符处理)(3)根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码。
(4)用哈夫曼编码来存储文件,并和输入文本文件大小进行比较,计算文件压缩率
(5)根据相应哈夫曼编码,对编码后的文件进行解码,恢复成ASCII编码的英文短文后输出。
分析及设计步骤(供参考)
1.分析问题,给出数学模型,设计相应的数据结构。
1)分析问题特点,用数学表达式或其它形式描述其数学模型。2)选择能够体现问题本身特点的一种或几种逻辑结构。
3)依据逻辑结构和问题特点,设计并选择相应的存储结构(顺序存储结构和链式存储结构对应的算法实现有区别)。
2.算法设计
1)确定所需模块:对于复杂的程序设计,要充分利用模块化程序设计方法和面向对象思想,自顶向下,逐步细化。
2)各子模块功能描述:给出主要模块的算法描述,用流程图或伪代码表示。3)模块之间的调用关系:给出算法各模块之间的关系图示。3.上机实现程序
为提高工作效率,充分利用上机调试时间,在上机之前应列出程序清单。
4.用有代表性的各种测试数据去验证算法及程序的正确性
5.算法分析及优化
经过上机调试,源程序运行正确,并且实现算法要求的功能,解决课程设计题目中给出的问题后,分析算法的时间复杂度和空间复杂度,如有可能对程序进行优化改进。
课程设计报告范例(参考)
约瑟夫环问题。
问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m,从第一个人开始顺时针方向自1起顺序报数,报到m时停止报数,抱m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新自1起顺序报数;如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,并给出出列人的编号序列。基本要求:
(1)初始报数上限值m和测试数据在程序中确定;(2)用带头结点的单循环链表作数据元素的存储结构;(3)把带头结点的单循环链表作为抽象数据类型设计。测试数据:
n = 7,七个人的密码依次为3,1,7,2,4,8,4 初始报数上限值m = 20 算法思想:
JesephRing()函数是实现问题要求的主要函数,其算法思想是:从1至m对带头结点的单循环链表循环计数,到m时,输出该结点的编号值,将该结点的密码作为新的m值,再从该结点的下一个结点起重新自1起循环计数;如此下去,直到单循环链表空时循环过程结束。模块划分:
(1)带头结点的单循环链表抽象数据类型SCLinList,其中包括基本操作的函数有:初始化操作函数、插入一个结点操作函数、删除一个结点操作函数、取一个结点数据操作函数和判表是否非空操作函数。该抽象数据类型文件名为SCLinList.h。
(2)void SCLLDeleteAfter(SCLNode *p),其功能是删除带头结点的单循环链表中指针p所指结点的下一个结点。这是对带头结点的单循环链表抽象数据类型SCLinList,补充本问题需要的一个操作函数。(3)void JesephRing(SCLNode *head, int m),其功能是对带头结点的单循环链表head,以m为初始报数上限值实现问题要求。
(4)void main(void),主函数,功能是给出测试数据值,建立测试数据值的带头结点单循环链表,调用JesephRing()函数实现问题要求。数据结构:
(1)数据类型DataType定义如下: typedef struct { int number;int cipher;} DataType;
(2)带头结点单循环链表抽象数据类型SCLinList。
(3)带头结点单循环链表抽象数据类型的结点结构定义如下:
typedef struct node { DataType data;struct node *next;} SCLNode;源程序:
源程序存放在两个文件中,文件SCLinList.h是带头结点单循环链表抽象数据类型,文件Exam3-9.c是主程序。
文件SCLinList.h: typedef struct node { DataType data;struct node *next;} SCLNode;/*结点结构定义*/ void SCLLInitiate(SCLNode **head)/*初始化*/ { if((*head =(SCLNode *)malloc(sizeof(SCLNode)))== NULL)exit(1);(*head)->next = *head;} int SCLLInsert(SCLNode *head, int i, DataType x)/*插入一个结点*/ { SCLNode *p, *q;int j;p = head->next;j = 1;while(p!= head && j < i1 && i!= 1){ printf(“插入位置参数错!”);return 0;} if((q =(SCLNode *)malloc(sizeof(SCLNode)))== NULL)exit(1);q->data = x;q->next = p->next;p->next = q;return 1;} int SCLLDelete(SCLNode *head, int i, DataType *x)/*删除一个结点*/ { SCLNode *p, *q;int j;p = head;j = 0;while(p->next!= head && j < i1){ printf(“删除位置参数错!”);return 0;} q = p->next;p->next = p->next->next;*x = q->data;free(q);return 1;} int SCLLGet(SCLNode *head, int i, DataType *x)/*取一个结点数据元素值*/ { SCLNode *p;int j;p = head;j = 0;while(p->next!= head && j < i){ p = p->next;j++;} if(j!= i){ printf(“取元素位置参数错!”);return 0;} *x = p->data;return 1;} int SCLLNotEmpty(SCLNode *head)/*链表非空否*/ { if(head->next == head)return 0;else return 1;} 文件Exam3-9.c: #include
printf(“ %d ”, curr->data.number);m = curr->data.cipher;curr = curr->next;if(curr == head)curr = curr->next;SCLLDeleteAfter(pre);} } void main(void){ DataType test[7]={{1,3},{2,1},{3,7},{4,2},{5,4},{6,8},{7,4}};int n = 7, m = 20, i;SCLNode *head;SCLLInitiate(&head);/*初始化*/ for(i = 1;i <= n;i++)/*循环插入建立单循环链表链表*/ SCLLInsert(head, i, test[i-1]);JesephRing(head, m);/*约瑟夫环问题函数*/ } 测试情况: 程序输出为: 6 1 4 7 2 3 5
各种排序比较结果(参考)
直接插入的比较图表***030002500直接插入的移动图表比较次数2000系列1******4738291100次数移动次数2000系列1******4738291100次数 冒泡的比较次数***00冒泡的移动图表***00比较次数移动次数*********1100执行次数系列*********91100次数系列1
SHELL的比较次数12001000800***01200SHELL的移动图表比较次数移动次数******1100执行次数系列******564738291100次数系列1
快速排序的比较次数800700600快速排序的移动图表540520500比较次数移动次数******4738291100执行次数系列******8291100次数简单选择的移动图表350300250系列1
简单选择的比较次数***0比较次数移动次数300025002000******4738291100执行次数堆排序的比较次数107010601050系列1200系列1******8291100次数 堆排序的移动图表***0比较次数移动次数*********00执行次数系列117401720******65564738291100次数系列1