1、数据结构课程设计任务书1班题目题目1.学生运动会成绩管理任务:学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。进入系统后可以输入和修改某个项目的结果情况,可以按各系院编号输出总分;按总分排序;按男团体总分排序;按系编号查询;按项目编号查询;按女团体总分排序。要求:建立一个文件,包括多个系,多个项目的得分情况,能对文件中的信息进行扩充(追加),修改和删除;完成对多个系,多个项目的得分排序,以及完成系统查询功能。键盘输入:系数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分
2、)。2. 哈夫曼树应用任务: 1从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;2利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrint中。3利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中,并输出结果。要求:完成功能1、2和3。3.图的
3、遍历任务:实现图的深度优先, 广度优先遍历算法,并输出原图结构及遍历结果。要求:两种必须都要实现,写出画图的思路;画出图的结构,有兴趣的同学可以进一步改进图的效果。4.矩阵乘法任务:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,完成矩阵的加法,减法,数乘,转置,ab1结果,对于不符合要求的运算给与提示。要求:除键盘输入外,可通过文件输入。5.数组应用功能:按照行优先顺序将输入的数据建成4维数组,再按照列优先顺序输出结果,给出任意处的元素值,并给出对应的一维数组中的序号。要求:完成规定功能。6.n元多项式运算任务:完成两个n元多项式作加法、减法、乘法,给出明确的等式
4、形式。要求:建立一个文件,实现两个一元二次多项式运算。要求:完成规定功能。7.集合运算任务:完成集合的合并、求交集、差、对称差等操作。要求:(1)使用顺序、单链表、双向循环链表、二叉平衡树、哈希表做存储形式表示集合。(2)比较不同存储结构的算法效率。8.公园的导游图任务:给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。要求:建立一个文件,包括5个景点情况,能完成遍历功能;进一步扩充景点数目,画出景点图,9.商店存货管理系统任务:建立一商店存货管理系统,要求每次出货时
5、取进货时间最早且最接近保质期中止时间的货物。要求:建立一个文件,包括5个种类的货物情况,能对商品信息进行扩充(追加),修改和删除以及简单的排序;扩充商品数量,以及完成系统查询功能。10.汉诺威塔任务:编程序显示n(n0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。如此下去,直到所有人全部出列为止。令n最大值取30。要求设计一个程序模拟此过程,求出出列编号序列。要求:完成规定功能,13.一元稀疏多项式计算器任务:一元稀疏多项式
6、简单计算器的基本功能是:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b;(5)多项式a和b相乘,建立多项式a*b.(6)计算多项式在x处的值.(7)求多项式a的导函数a.(8)多项式的输出形式为类数学表达式.例如,多项式-3x8+6x3-18的输出形式为-3x8+6x3 -18,x15+(-8)x7-14的输出形式为x15-8x7-14.注意,系数值为1 的非零次项的输出形式中略去
7、系数1,如项1x8的输出形式为x8,项-1x3的输出形式为-x3.(9)计算器的仿真界面.要求:用带表头结点的单链表存储多项式.。14.走迷宫游戏任务:程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。要求:1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)迷宫的墙足够结实,老鼠不能穿墙而过;3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5)找出走出迷宫的所有路径,以及最短路径。6)利用序列化功能实现迷宫地图文件
8、的存盘和读出等功能15.哈夫曼编/编译器任务:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这是要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼的编/译码系统。要求:一个完整的系统应该具有以下功能:(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。(2)E编码(Encoding)。利用建好的哈夫曼树(如不在内存,则从文件
9、hfmTree中读入),对文件ToBeTran中正文进行编码,然后将结果存入文件CodeFile中。(3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。(4)P印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。(5)T打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此文字符形式的哈夫曼树写入文件TreePrint中。(6)上述文件CodeFile中的每个“0”或
10、“1”实际上占用了一个字节的空间,只起到示意或模拟的作用。为最大限度的利用码点存储能力,试改写你的系统,将编码结果以二进制形式存放在文件CodeFile中。(7)修改你的系统,实现对你的系统的原程序的编码和译码(8)实现各个转换操作的源/目文件,均由用户在选择此操作时指定。测试数据:用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE ”。字符 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
11、 U V W X Y Z频度57 63 15 1 48 51 80 23 8 18 1 16 116.稀疏矩阵运算器任务:稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。以“带行逻辑链接信息”的三元组、以十字链表表示稀疏矩阵。表示稀疏矩阵,实现两矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。实现矩阵求逆的运算。要求:首先应输入矩阵的行数和列数,并判别两个矩阵的行、列数对于所要求做的运算是否相匹配。可设矩阵的行数和列数均不超过20。程序可以对输入的
12、三元组进行限制,例如,按行优先。注意提高计算效率。17.迷宫问题的求解及演示任务:以一个mn的长方阵表示迷宫,0和1分别表示迷宫中的道路和障碍.设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。编写递归形式的算法,求得迷宫中所有可能的通路;以方阵形式输出迷宫及其通路。要求:首先实现一个以链表做存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向.如:对于下列数据的迷宫,输出的一条通路为(1,1,1),(1,1,2),(2,2,2),(3,2,3),(3,1,
13、2),。测试数据:迷宫测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口 1 2 3 4 5 6 7 8001000100010001000001101011100100001000001000101011110011100010111000000实现提示:计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。可以二维数组存储迷宫数据,通常设定入口的下标为(1,10,出口点的下标为(n,n)。为处理方便起见
14、,可在迷宫的四周加一圈障碍。对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。18、串基本操作的演示任务:实现串类型,并写一个串的基本操作的演示系统。要求:用堆分配存储表示实现HString串的最小操作子集的基础上,实现串抽象数据类型的其余基本操作,参数合法性检查必须严格。系统既能处理正确的命令,也能处理错误的命令。说明:(在格式中,表示0个、1个或多个空格所组成的串;串标识表示一个内部名或一个串文字。前者是一个串的唯一标识,是一种内部形式的(而不是字符形式的)标识符。后者是两端由单引号括起来的仅可打印字符组成的序列。串内每两个连续的单引号表示一个单引号符。)利用上述基本操作函数构造以
15、下系统:它是一个命令解释程序,循环往复地处理用户键入的每一条命令,直至终止程序的命令为止。命令定义如下:(1)赋值。格式:A串标识回车用串标识所表示的值建立新串,并显示新串的内部名和串值。如:AHi!(2)判相等。格式:E串标识1串标识2回车若两串相等,则显示“EQUAL”,否则显示“UNEQUAL”。(3)联接。格式:C串标识1串标识2回车将两串联接产生结果串,它的内部名和串值都显示出来。(4)求长度格式:L串标识回车显示串的长度。(5)求子串格式:S串标识+数1+数2回车如果参数合法,则显示子串的内部名和串值。数不带正负号。(6)子串定位。格式:I串标识1串标识2回车显示第二个串在第一个串
16、中首次出现时的位置。(7)串替换格式:R串标识1串标识2串标识2回车将第一个串中出现所有出现的第二个串用第三个串替换,显示结果串的内部名和串值,原串不变。(8)显示格式:P回车显示所有在系统中被保持的串的内部名和串值的对照表。(9)删除格式:D内部名回车删除该内部名对应的的串,即赋值的逆操作。(10)退出格式:Q回车结束程序的运行。在上述命令中,如果一个自变量是串,则应首先建立它。基本操作函数的结果(即函数值)如果是一个串,则应在尚未分配的区域内新辟空间存放。支持串名。将串名(可设不超过6个字符)存于串表头中。命令(1)(3)(5)要增加命令参数结果串名;命令(7)中的串标识1改为串名,并用此
17、名作为结果串名,删除原被替串标识,用串名代替串标识定义和命令解释中的内部名。每个命令执行完毕时立即自动删除无名串。测试数据:自定。但要包括以下几组:(1)E回车,应显示“EQUAL”。(2)Eabcabcd回车,应显示“UNEQUAL”。(3)C回车,应显示。(4)Ia回车,应报告:参数非法。(5)Raaaaab回车,应显示ba(6) Raaabcaaab回车,应显示aabaabaabbc。(7)Raaaaaaaaaaaaab回车,应显示abab。实现提示:(1)演示系统的主结构是一个串表头,可定义为:struct HStringStrHead100;intCurNum; StrHeadLis
18、t;将各串的头指针依次存于串头数组StrHead中(设串的数目不超过100)。CurNum为系统中现有的串的数目,CurNum+1是可为下一个新串头指针分配的位置。可以取StrHead的元素下标作为所对应串的内部名。(2)应设置一个命令为分析函数,把命令分析结果通过一下类型的一个变量参数返回: typedef struct intCmdNo;/或char类型,为命令号或命令符int s3; /命令串参数的内部名(最多3个)intnum2; / 命令的数值参数(最多2个)ResultType;此函数还在存储结构中建立命令参数中的串。可能再设置一个“取下一个命令参数串”的操作是有益的。注意不要把这
19、里的命令与所有机器的操作系统的命令相混。为了处理简单化,可以不对命令的格式作严格的语法检查。19.内部排序算法比较任务:在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。要求:(1)对以下内部算法进行比较:起泡排序、直接插入排序、简单选择排序、快速查找排序、希尔排序、堆排序、折半插入排序、二路插入排序、归并排序、基数排序。(2)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键
20、字交换计为3次移动)。(3)最后要对结果作出简单分析,包括对各数据得出结果波动大小的解释。实现提示:主要工作是设法在已知算法中的适当位置插入对关键字的比较次数和移动次数的计数操作。程序还可以考虑几组数据的典型性,如,正序、逆序和不同程度的乱序。注意采用分块调试的方法。对不同的输入表长作实验,观察检查的两个指标相对于表长的变化关系。还可以对稳定性作验证。20. 算术表达式的求值演示任务:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型的例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教科书给出的算
21、符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书上的例子演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。测试数据:8; 1+2+3+4; 88-1*5;1024/4*8; 1024/(4*8);(20+2)*(6/2);3-3-3; 8/(9-9); 2*(6+2*(3+6*(6+6);(6+6)*6+3)*2+6)*2;实现提示:(1)设置运算符栈和运算数栈辅助分析算符优先关系。(2)在读入表达式的字符序列的同时,完成运算符和运算数(整数)的识别处理,以及相应的运算。(3)在识别出运算数的同时,要将其字符序列形式转化成整数形式。(4)在程序的适当位置输出运算符栈、运
22、算数栈、输入字符和主要操作的内容。选做内容:( 1)扩充运算符集,如增加乘方、单目减、赋值等运算。(2)运算量可以是变量。(3)运算量可以是实数类型。(4)计算器的功能和仿真界面。21.校园导游咨询任务:设计一个校园导游程序,为来访的客人提供各种信息查询服务。要求:(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度的相关信息。(2)为来访客人提供图中任意景点的相关信息查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短路径。(4)提供图中任意景点问路查询,即求任意两个景点之间
23、的所有路径。(5)校园导游图的景点和道路的修改扩充功能。(6)道路信息,如道路类别(车道、人行道等)、沿途景色等级,以至可按客人所需分别查询人行路径或车行路径或观景路径等。选做内容:(1)求校园的关节点。(2)提供校园图中多个景点的最佳访问路线查询,即求途经这个景点的最佳(短)路径。(3)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详导向信息。(4)实现校园导游图的仿真界面。22. 马踏棋盘任务:设计一个国际象棋的马踏遍棋盘的演示程序。要求:将马随机放在国际象棋的88棋盘Board88的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制非递归
24、程序,求出马的行走路线,并按求出的行走路线,将数字1,2,64依次填入一个88的方阵,并输出。23.平衡二叉树操作的演示任务:利用平衡二叉树实现一个动态查找表。要求:(1) 实现动态查找表的三种功能:查找、插入、删除。平衡二叉树的显示可采用凹入表现形式,也可以采用图形界面画出树。每次插入或删除一个结点后,应更新平衡二叉树的显示。(2) 合并两棵平衡二叉树。(3)把一棵二叉树分裂为两棵平衡二叉树,使得在一棵树中的所有关键字都小于或等于x,另一棵树中的任一关键字都大于x。24.最小生成树问题任务:若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。如何以最低的经济代价建设这个通信网,是一个
25、网的最小生成树问题。要求:(1)利用普里姆、克鲁斯卡尔算法求网的最小生成树。(2)实现教材6.5节中定义的抽象数据类型MFSet。以此表示构造生成树过程中的连通分量。(3)以文本的形式输出生成树中各条边以及他们的权值。(a c 3)(4)利用堆排序实现选择权值最小的边。25内存分配算法任务:处理器中有一就绪队列,若干个进程依到达的时刻依次进入就绪队列,每个进程有进程名和处理器处理此进程的所需空间、优先级。要求:(1)仿静态链表形式分配内存所需空间,编程序实现内存分配算法,演示调度过程;(2)实现按照优先级调度算法,并演示调度过程。26.运动会分数统计任务:参加运动会有n个学校,学校编号为1n。
26、比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5) 数据存入文件并能随时查询6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面
27、要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。请在最后的上交报告中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的报告中写明;27. 飞机订票系统任务:通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,(3)订票:(订票情况可以存在一
28、个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:可退票,退票后修改相关数据文件;(5)客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。(6)修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;28.文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
29、(4)存储结构使用线性表,分别用几个子函数实现相应的功能;(5)输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。(6)输出形式:1)分行输出用户输入的各行字符;2)分4行输出全部字母数、数字个数、空格个数、文章总字数;3)输出删除某一字符串后的文章;29. 纸牌游戏任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?要求:界面友好美观,给出变化过程。30. 宿舍管理查询软件任务:为宿舍管理人员编写一个宿舍管理查询软件。要求:(1)采用交互工作方式;(2)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(排序方式至少4种);(3) 查询: (用4种以上查找方式实现以下操作)按姓名查询、按学号查询、按房号查询;(4) 打印查询结果。31. 地图着色问题任务:已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。要求:(1)界面友好(2)给出求解过程32.员工管理系统任务:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1