第一篇:数据结构课程设计分类题目
线性表
顺序表:
1、设有一元素为整数的线性表L=(a1,a2,a3,„,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左、右两部分,其中左半部分每个元素小于等于an,右半部分每个元素都大于an, an位于分界位置上(要求结果仍存放在A[N]中)。
2、设线性表存于A[1..size]的前num各分量中,且递增有序。请设计一个算法,将x插入到线性表的适当位置上,以保持线性表的有序性。
3、线性表(a1,a2,a3,„,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成:(1)用最少时间在表中查找数值为x的元素。
(2)若找到将其与后继元素位置相交换。
(3)若找不到将其插入表中并使表中元素仍递增有序。
4、已知数组A[0:n-1]的元素类型为int,试设计算法将其调整为左右两个部分,左边所有元素为奇数,右边所有元素为偶数。
5、设计一个算法从顺序表L中删除所有值为x的元素
6、设计一个算法从顺序表L中删除所有值为x到y之间(x<=y)的元素
链表:
1、假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。
2、已知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。
3、设L为单链表的头结点地址,其数据结点的数据都是正整数且无相同的,设计一个将该链表整理成数据递增的有序单链表的算法。
5、设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A的元素类型为整型,要求B、C表利用A表的结点)。
6、试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。
7、设L为单链表的头结点地址,请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点。
8、已知两个单链表A和B,其头指针分别为heada和headb,编写一个过程从单链表A中删除自第i个元素起的共len个元素,然后将单链表A插入到单链表B的第j个元素之前。
9、已知递增有序的单链表A,B分别存储了一个集合,请设计算法以求出两个集合A和B 的差集A-B(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
10、已知一个单链表中每个结点存放一个整数,并且结点数不少于2,请设计算法以判断该链表中第二项起的每个元素值是否等于其序号的平方减去其前驱的值,若满足则返回ture,否则返回false.11、两个整数序列A=a1,a2,a3,„,am和B=b1,b2,b3,„,bn已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的子序列。
12、已知p指向双向循环链表中的一个结点,其结点结构为data、llink、rlink三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。
13、设有一个由正整数组成的无序单链表,编写完成下列功能的算法:
(1)找出最小值结点,且打印该数值;
(2)若该数值是奇数,则将其与直接后继结点的数值交换;
(3)若该数值是偶数,则将其直接后继结点删除。
14、在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。例如:(7,10,10,21,30,42,42,42,51,70)将变作(7,10,21,30,42,51,70)。
15、设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法 :(要求用最少的时间和最小的空间)
(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{20,20,17,16,15,15,11,10,8,7,7,5,4}中比10大的数有5个);
(2)在单链表将比正整数x小的数按递减次序排列;
(3)将正整数(比)x大的偶数从单链表中删除。
16、编写一个算法来交换单链表中指针P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。
17、.已知三个带头结点的线性链表A、B和C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对A表进行如下操作:使操作后的链表A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O(m+n+p),其中m、n和p分别为三个表的长度。
栈和队列
1、设计一个算法,利用栈的基本运算将指定栈中的内容逆转。
2、设计一个算法,利用栈的基本运算返回指定栈中栈底元素。
3、设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[O..maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计S1,S2有关入栈和出栈的操作算法。
4、设从键盘输入一整数的序列:a1, a2, a3,„,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。
4、设表达式以字符形式已存入数组E[n]中,‘#’为表达式的结束符,试写出判断表达式中括号(‘(’和‘)’)是否配对的C语言描述算法:EXYX(E);(注:算法中可调用栈操作的基本算法。)
5、从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$
6、写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
7、设计一个算法,判断一个算术表达式中的括号是否配对。算术表达式保存在带头结点的单循环链表中,每个结点有两个域:ch和link,其中ch域为字符类型。
8、请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给变量x;Sempty(ST):判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列; dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释)
9、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针,如图所示(编者略),请写出相应的入队列和出队列算法。
10、如果允许在循环队列的两端都可以进行插入和删除操作。要求:
(1)写出循环队列的类型定义;(2)写出“从队尾删除”和“从队头插入”的算法。
11、在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。
12、已知Q是一个非空队列,S是一个空栈。仅用队列和栈的操作编写一个算法,将队列Q中的所有元素逆置。
13、已知求两个正整数m与n的最大公因子的过程用自然语言可以表述为反复执行如下动作:第一步:若n等于零,则返回m;第二步:若m小于n,则m与n相互交换;否则,保存m,然后将n送m,将保存的m除以n的余数送n。
(1)将上述过程用递归函数表达出来(设求x除以y的余数可以用x MOD y 形式表示)。(2)写出求解该递归函数的非递归算法。
14、试将下列递归过程改写为非递归过程。void test(int &sum){ int x; scanf(x);
if(x=0)sum=0 else {test(sum);sum+=x;} printf(sum); }
树和二叉树
1、二叉树用二叉链表存储,写一个算法将二叉树中的叶子结点按从右至左的顺序建立一个单链表。
2、知二叉树用二叉链表存储,写出求二叉树宽度的算法。所谓宽度是指在二叉树的各层上,具有结点数最多的那一层上的结点总数。
3、叉树用二叉链表存储,写一个算法交换各结点的左右子树。
4、二叉树用二叉链表存储,若结点的左孩子的数据域的值大于右孩子数据域的值,则交换其左右子树。
5、叉树用二叉链表存储,编写一算法,判别给定的二叉树是否为完全二叉树。
6、个结点的完全二叉树以一维数组为存储结构,编写一非递归算法实现对该树的先序遍历。
7、编写一算法,在二叉树中查找值为x的结点,并打印值为x的结点的所有祖先结点。
8、编写中序遍历二叉树的非递归算法。
9、编写先序遍历二叉树的非递归算法。
10、编写后序二叉树的非递归算法。
11、叉树用二叉链表存储,任给一个二叉树表示的四则运算表达式,编写算法,由该二叉树输出该表达式,若原表达式有括号亦加上。
12、有n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的二叉树,根由tree指向。
13、二叉树排序方法如下:
(1)将第一个数据放在树根。
(2)将随后读入的数据与树根中的数据相比较,若比树根大,则置于右子树,反之则置于左子树,建成一棵二叉树;
(3)利用中序遍历打印排序结果。用C语言编写二叉树的排序程序。
14、二叉树结点的平衡因子(bf)定义为该结点的左子树高度与右子树高度之差。编写算法计算二叉树中各个结点的平衡因子。
15、设计算法:统计一棵二叉树中所有叶结点的数目及非叶结点的数目。
16、已知二叉树以二叉链表存储,编写算法完成:对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
17、试编写算法,对一棵以孩子—兄弟链表表示的树统计叶子的个数。
18、设一棵二叉树中各结点的值互不相同,其前序序列和中序序列分别存于两个一维数组pre[1..n ]和mid[1..n ]中,试遍写算法建立该二叉树的二叉链表。
19、试设计一个算法打印出由根结点出发到达叶结点的所有路径。
20、试写出算法,求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。
21、给定一组项及其权值,假定项都存放于二叉树的树叶结点,则具有最小带权外部路径长度的树称为huffman 树。编写构造huffman 树 的算法。
22、已知一中序线索二叉树,写一算法完成对它的中序扫描。
23、已知中序线索二叉树T右子树不空。设计算法,将S所指的结点作为T的右子树中的一个叶子结点插入进去,并使之成为T的右子树的(中序序列)第一个结点(同时要修改相应的线索关系)。
24、写出算法,求出中序线索二叉树中给定值为x的结点之后继结点,返回该后继结点的指针。线索树中结点结构为:(ltag,lc,data,rc,rtag)。其中,data存放结点的值;lc,rc为指向左、右孩子或该结点前驱或后继的指针;ltag,rtag为标志域,各值为:0,则lc,rc为指向左、右孩子的指针;值为1,则lc,rc为指向某前驱后继结点的指针
25、设后序线索树中结点构造为(Ltag,Lchild,Data,Rchild,Rtag)。其中:Ltag,Rtag 值为0时,Lchild、Rchild 分别为儿子指针;否则分别为直接前驱,直接后继的线索。请写出在后序线索树上找给定结点p^ 的直接前驱q 的算法。
图
1、设无向图G有n个顶点,m条边。试编写用邻接表存储该图的算法。(设顶点值用1~n或0~n-1编号)
2、已知有向图有n个顶点,请写算法,根据用户输入的偶对建立该有向图的邻接表。即接受用户输入的
3、给出以十字链表作存储结构,建立图的算法,输入(i,j,v)其中i,j为顶点号,v为权值。
4、设有向G图有n个点(用1,2,„,n表示),e条边,写一算法建立有向图的逆邻接表。
5、设已给出图的邻接矩阵,要求将图的邻接矩阵转化为邻接表,试实现其算法。
6、编写算法,将图的邻接矩阵存储改为邻接表的存储。
7、试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点Vi到顶点Vj的路径(i<>j)。
8、已知无向图采用邻接表存储方式,试写出删除边(i,j)的算法。
9、假设有向图以邻接表存储,试编写算法删除弧
10、假设有向图以十字链表存储,试编写算法,插入弧
12、设有向图用邻接表表示,图有n个顶点,表示为1至n,试写一个算法求顶点k的入度(1 13、写出图的深度优先搜索DFS算法的非递归算法。 14、已知带权图用邻接矩阵表示,编写函数实现用Kruskal算法构造最小生成树的算法。 15、编写函数实现用Prim算法构造最小生成树的算法。 16、编写函数实现从指定顶点到其余各顶点的最短路径的Dijkstra 算法。 17、实现图的拓扑排序算法。 查找和排序 1、设计一个二分查找的递归算法。 2、设计一个算法,利用二分查找算法在一个有序表中插入一个元素x,并保持表的有序性。 3、实现散列表的相关算法 (1)给定一个序列,和散列函数,并利用线性探测再散列处理冲突,建立散列表。(2)编写函数,查找某一个关键字(3)编写函数,删除找某一个关键字 4、设计一个顺序查找算法 5、编写一个算法,统计 一个字符串中出现字符的次数。 6、实现二叉查找树的相关算法(1)给定序列,创建一二叉查找树(2)判定一棵树是否为二叉查找树 (3)采用递归和非递归算法,查找某一个关键字(4)编写函数,删除找某一个关键字 7、编写函数实现直接插入算法、希尔排序算法。 8、编写函数实现冒泡排序算法、快速排序算法。 9、编写函数实现堆排序算法。 10、编写函数实现二路归并排序算法。 11、编写函数实现基数排序算法。 12、编写函数实现可变长度的字符串序列快速排序算法。 数据结构课程设计题目 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 数据结构课程设计题目 数据结构课程设计题目(大题目).doc 一、公司销售管理系统 项目开发基本要求 1.客户信息管理:对客户的基本信息进行添加、修改和删除。2.产品信息管理:对产品的基本信息进行添加、修改和删除。3.供应商信息管理:对供应商的基本信息进行添加、修改和删除。4.订单信息管理:对订单的基本信息进行添加、修改和删除。 二、高校科研管理系统 系统主要用于帮助高校或科研单位管理和维护各项科研相关资料 项目开发基本要求 1.系统用户管理模块:为系统新用户设置用户名及口令;操作员更改自己的系统口令。2.数据字典管理模块:管理项目性质包括:分为国家自然科学基金、863、部省科委及企业集团四种情况;范围包括:分为全国、国际、地方三种情况;检索源包括:分为EI、SCI、核心和一般四种情况。 3.项目参加人员管理模块包括:显示添加修改删除查询。4.项目基本情况模块包括:显示添加修改删除查询。5.项目获奖情况模块包括:显示添加修改删除查询。6.期刊论文管理模块包括:显示添加修改删除查询。7.著作管理模块包括:显示添加修改删除查询。 8.科研工作量统计模块:按照学校科研工作量计算办法,为每位科研人员进行科研工作量的计算和统计。 9.科研积分统计模块:按照学校科研积分计算办法,为每位科研人员进行科研计分的计算和统计。 三、网络五子棋对战 四、不同排序算法模拟 五、科学计算器 数据结构课程设计题目 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.飞机订票系统 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息: 当航班信息改变可以修改航班数据文件 要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; 3.文章编辑 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”(3)输出删除某一字符串后的文章; 4.宿舍管理查询软件 1)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: A.采用交互工作方式 B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单:(用二分查找实现以下操作)A.按姓名查询 B.按学号查询 C.按房号查询 3)打印任一查询结果(可以连续操作) 5.校园导航问题 设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 6.教学计划编制问题 设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。 7.散列法的实验研究 散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。两者是影响查询算法性能的关键因素。对于几种典型的散列函数构造方法,做实验观察,不同的解决冲突方法对查询性能的影响。 8.图书借阅管理系统 主要分为两大功能: 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息); 9.学生成绩管理 实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。 10.活期储蓄帐目管理 活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求: 1)能比较迅速地找到储户的帐户,以实现存款、取款记账; 2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。 11.二叉排序树的实现 用顺序和二叉链表作存储结构 1)以回车('n')为输入结束标志,输入数列L,生成一棵二叉排 序树T; 2)对二叉排序树T作中序遍历,输出结果; 3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”; 12.最小生成树问题 设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 13.通讯录的制作 设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。设计内容:本系统应完成一下几方面的功能: 1)输入信息——enter();2)显示信息———display(); 3)查找以姓名作为关键字 ———search();4)删除信息———delete();5)存盘———save();6)装入———load();设计要求: 1)每条信息至包含 :姓名(NAME)街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项 2)作为一个完整的系统,应具有友好的界面和较强的容错能力 3)上机能正常运行,并写出课程设计报告 14.哈夫曼编码/译码器 【问题描述】 设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。【基本要求】 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)每种书的登记内容包括书号、书名、著作者、现存量和库存量; 2)对书号建立索引表(线性表)以提高查找效率; 3)系统主要功能如下: *采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; *借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; *归还:注销对借阅者的登记,改变该书的现存量。【进一步完成内容】 1)系统功能的进一步完善; 2)索引表采用树表。3)设计内容 4)程序流程图 5)源程序 6)软件测试报告(包括所用到的数据及结果) 16.散列表的设计与实现 【问题描述】 设计散列表实现电话号码查找系统。【基本要求】 1)设每个记录有下列数据项:电话号码、用户名、地址; 2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 3)采用一定的方法解决冲突; 4)查找并显示给定电话号码的记录; 5)查找并显示给定用户名的记录。【进一步完成内容】 1)系统功能的完善; 2)设计不同的散列函数,比较冲突率; 3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。 17.顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。 设有一元多项式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.利用栈求表达式的值,可供小学生作业,并能给出分数。 要求:建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价 19.简易文本编辑器 要求: 1)具有图形菜单界面; 2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除 3)可正确存盘、取盘; 4)正确显示总行数。 20.二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。 要求:遍历的内容应是千姿百态的。 树与二叉树的转换的实现。以及树的前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。 要求:遍历的内容应是千姿百态的。 21.学生搭配问题 一班有m个女生,有n个男生(m不等于n),现要开一个舞会.男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下: 1)输出每曲配对情况 2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值.3)尽量设计出多种算法及程序,可视情况适当加分 提示:用队列来解决比较方便.22.猴子吃桃子问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 要求: 1)采用数组数据结构实现上述求解 2)采用链数据结构实现上述求解 3)采用递归实现上述求解 23.数制转换问题 任意给定一个M进制的数x,请实现如下要求 1)求出此数x的10进制值(用MD表示)2)实现对x向任意的一个非M进制的数的转换。 3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 24.排序综合 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。要求: 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。3)如果采用4种或4种以上的方法者,可适当加分。 25.学生成绩管理系统 现有学生成绩信息文件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)先任意创建一个图; 2)图的DFS,BFS的递归和非递归算法的实现 3)要求用有向图和无向图分别实现 4)要求用邻接矩阵、邻接表多种结构存储实现 27.线索二叉树的应用 要求:实现线索树建立、插入、删除、恢复线索的实现。 28.稀疏矩阵应用 要求:实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。(1)稀疏矩阵的存储(2)稀疏矩阵加法(3)矩阵乘法(4)矩阵转置 29.树的应用 要求:实现树与二叉树的转换的实现。以及树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。 30.文本文件单词的检索与计数 设计要求与分析: 要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。(1).建立文本文件(2)给定单词的计数 (3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构 ① 头文件包含 ② 菜单选项包含 建立文件、单词定位、单词计数、退出程序 ③ 选择1-4执行相应的操作,其他字符为非法。 31.任意长的整数加法 问题描述:设计一个程序实现两个任意长的整数的求和运算。 基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。 32.二叉平衡排序树 问题描述:从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。最终要把创建好的二叉排序树转换为二叉平衡排序树。基本要求:1.创建(插入、调整、改组)2.输出 33.串的查找和替换 问题描述:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。 34.约瑟夫环 问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。基本要求: 1、利用单循环链表作为存储结构模拟此过程; 2、键盘输入总人数、初始报数上限值m及各人密码; 3、按照出列顺序输出各人的编号。 35.构造可以使n个城市连接的最小生成树 问题描述:给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求: 1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 2、表示城市间距离网的邻接矩阵(要求至少6个城市,10条边) 3、最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。 36.客户消费积分管理系统 问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求: 1.采用一定的存储结构进行客户信息的存储; 2.对客户的信息可以进行修改、删除、添加; 3.能够根据消费情况进行客户积分的计算; 4.根据积分情况实行不同程度的打折优惠; 37.产品进销存管理系统 问题描述:针对某一种行业的库房的产品进销存情况进行管理。基本要求: 1.采用一定的存储结构对库房的货品及其数量进行分类管理; 2.可以进行产品类的添加、产品的添加、产品数量的添加; 3.能够查询库房每种产品的总量、进货日期、销出数量、销售时间等; 38.特殊矩阵的压缩存储算法的实现 问题描述:对于特殊矩阵可以通过压缩存储减少存储空间。基本要求: 1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值; 2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值; 39.算术表达式的求解 问题描述:给定一个算术表达式,通过程序求出最后的结果。基本要求: 1. 从键盘输入要求解的算术表达式; 2. 采用栈结构进行算术表达式的求解过程; 3. 能够判断算术表达式正确与否; 4. 对于错误表达式给出提示; 5. 对于正确的表达式给出最后的结果; 40.实时监控报警系统 问题描述:建立一个报警和出警管理的系统 基本要求: 1.采用一定的存储结构存储报警信息,要求有内容、时间; 2.有一次的出警就应该在待处理的信息中删除这条信息; 3.记录出警信息; 4.待处理信息过多时会发出警告; 41.车厢调度 问题描述:假设停在铁路调度站入口处的车厢序列的编号一次为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)对一个描述工程的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。 测试数据中不包含任何到达起点星球的信息以及任何从终点星球出发的信息。输出要求: 对每一组测试,在一行里输出终点星球接待站应具有的最小容量,使得每艘飞船在到达时都可以保证让全部旅客下船。 51:算术运算测试 功能要求:该程序用图形界面实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。 界面要求:用图形界面实现。52:猜数游戏 功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。 界面要示:用图形界面实现。 53、学生成绩管理 功能要求: 1)输入十个同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础) 2)计算出平均成绩。以平均成绩降序输出成绩表。3)输出全组各科平均分,最高分和最低分。4)输入姓名查询成绩 界面要示:用图形界面实现。54.矩阵的运算 采用链表表示稀疏矩阵,并实现矩阵的加法,乘法,求逆运算, 要求:要检查有关运算的条件,并对错误的条件产生报警。 55.建立二叉树和线索二叉树 分别用以下方法建立二叉树并用图型显示出来: 用先序遍历的输入序列 用层次遍历的输入序列 用先序和中序遍历的结果 最后对所建立的二叉树进行中序线索化,并对此线索树进行中序遍历(不使用栈)。 56.银行业务模拟: 客户业务分为两种。第一种是申请从银行得到一笔资金,即取款或借款。第二种是向银行投入一笔资金,即存款或还款。 银行有两个服务窗口,相应的有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立即排入第二队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。 57.假设一个宾馆有n个标准的客房,每个标准客房有m个标准间,利用链表、栈或者队列等数据结构设计出具有订房和退房等功能的管理系统。 数据结构课程设计 一、教学目的和要求 课程设计是加强学生实践能力的一个强有力手段。综合课设1主要针对数据结构和c/c++语言开展的实践性课程。要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C(C++)程序并上机调试的基本方法。课程设计要求学生在完成程序设计的同时能够写出比较规范的课程设计报告。培养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 二、课程设计要求 1、选好题目:每题一人,每班每个题目只允许一人选做,学习委员将选题情况在课设第一天统计上交。 2、课设报告独立思考,独立完成:课设报告出现雷同超过60%,不论什么原因,一律不及格。班和班之间,相同题目的同学,可以组成小组,相互讨论,共同完成课程设计中各任务的设计和调试要求。小组成员间,算法思路可以相同,程序可以类似,但不能完全一样。课设报告不能雷同超过60%。 3、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。 4、设计要点: ⑴需求分析: 在该部分中叙述总共几个模块,每个模块的功能要求。 ⑵系统设计 总体设计:定义某个数据结构的抽象数据类型及其他算法的功能说明。 详细设计:在此定义存储结构,每个部分的算法设计说明(建议描述算法采用流程图)。⑶编码实现 各个算法实现的源程序,对每个题目要有相应的源程序(每个功能模块采用不同的函数实现)。源程序要按照程序的规则来编写,要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。程序能够运行,要有基本的容错功能,尽量避免出现操作失误时出现死循环。⑷调试分析 给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来。时间复杂度分析,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。 ⑸课设总结:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。 5、实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时文件夹的取名规则为:“课设题目(***设计完成)”,如“资源管理系统的设计与实现(张三设计完成)”。该文件夹下包括三个目录:“源代码”、“可执行文件”、“张三_课程设计报告”。由学习委员按规定时间统一上交)。 6、报告提交 形式: 纸介质(要求B5纸张打印,加封皮)和电子文档。 三、考核方法和内容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 优秀:答辩所有问题都能答出+报告良好 良好:答辩所有问题都能答出+报告一般 中等:答辩大部分问题能答出+报告良好 及格:答辩大部分问题能答出+报告一般 不及格:答辩几乎答不出问题 或者 报告几乎都是代码 或者 雷同部分达到60% 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)----- 1、设计任务(题目要求)----- 2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)----- 3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)---- 4、编码实现(重要函数的实现代码)----- 5、调试分析(选择多组测试数据、运行截图、结果分析)----- 6、课设总结(心得体会)----- 7、谢辞----- 8、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在10—15页内,报告中不能全是代码,报告中代码总量控制在150行内。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 四、课程设计的题目 1、运动会分数统计 2、集合的并、交和差运算的程序 3、长整数的加法运算 4、一元多项式计算器 5、车厢调度问题 6、文章编辑 7、识别广义表的头或尾的演示 8、哈夫曼树及其编码 9、校园导游咨询 10、地图着色问题 11、内部排序算法比较 12、哈希表的设计与实现——线性探测再散列 13、哈希表的设计与实现——二次探测再散列 14、哈希表的设计与实现——链地址法 15、火车售票系统 16、图书管理系统 17、客户消费积分管理系统 18、产品进销存管理系统 19、学生成绩管理系统的设计与实现 20、通讯录管理系统的设计与实现——线性表 21、通讯录管理系统的设计与实现——哈希表 22、简单目录管理系统的设计与实现 23、最短旅程的求解 24、迷宫求解 25、家谱管理系统的设计与实现 26、宿舍管理查询软件 27、语言中平衡符号的问题 28、算术表达式求解 29、表达式求值,可供小学生作业,并能给出分数 30、数制转换问题 31、病人就医管理 32、九宫格问题 33、银行业务模拟 34、停车场管理 35、关键路径问题 36、地铁站建设问题 37、服装销售系统 38、歌星大奖赛 39、机房机位预约模拟系统 40、歌曲信息管理系统 41、简单的试题库管理系统 42、学生点名系统 43、猜数游戏 五、数据结构课程设计的具体内容 要求:全部采用数据结构课程中的内容实现,采用C或C++实现,逻辑结构只能选线性结构、树型结构、图型结构、集合结构中的一种,不能用数据库。 1、运动会分数统计 问题描述: 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为11,7,4,2,1;还有些项目只取前三名,得分顺序为5,3,2。哪些项目取前五名或前三名由学生自己设定。写一个统计程序产生各种成绩单和得分报表。基本要求: (1)各项目结束时,输入前三名或前五名的项目编号、运动员姓名、校名和名次(成绩);(2)产生各学校的成绩单,内容包括每个学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分,并统计各学校总分; (3)可以按学校编号、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;(5)可以按项目编号查询取得前三或前五名的学校;(6)演示程序以用户和计算机的对话方式执行。 2、集合的并、交和差运算的程序 问题描述: 编制一个能演示执行集合的并、交和差运算的程序。基本要求: ⑴集合的元素限定为大小写字母符[′a′….′z ′′A′….′Z ′],集合的大小n<53。 ⑵集合输入的形式为一个以“回车符”为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去。 ⑶输出的运算结果字符串中将不含重复字符或非法字符。⑷演示程序以用户和计算机的对话方式执行。 3、长整数的加法运算 问题描述: 设计一个实现任意长的整数进行加法、减法运算的演示程序。 基本要求: ⑴利用链表实现长整数的存储,每个结点含一个整型变量。提醒:任何整型变量int的范围是-(2^15-1)~(2^15-1)。 ⑵输入和输出形式按照中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。如:-2345,6789,3211; ⑶演示程序以用户和计算机的对话方式执行。 4、一元多项式计算器 问题描述: 设有一元多项式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)。基本要求: ⑴首先判定多项式是否稀疏; ⑵分别采用顺序和链式结构实现; ⑶结果M(x)中无重复阶项和无零系数项; ⑷要求输出结果的升幂和降幂两种排列情况。⑸演示程序以用户和计算机的对话方式执行。 5、车厢调度问题 问题描述: 假设停在铁路调度站(如教科书中图3.1(b)所示)入口处的车厢系列的编号依次为1,2,3,…n。设计一个程序,求出所有可能由此输出的长度为n 的车厢系列。基本要求: ⑴设计一个程序,求出由一个编号依次为1,2,、、、,n的车厢序列可能产生的所有出栈系列。⑵利用双向栈存储结构实现调度站和输出序列这两个栈的空间共享。 ⑶对于每个输出序列演示出所有操作序列的变化过程。 6、文章编辑 问题描述: 输入一页文字,可以统计出文字、数字、空格的个数。基本要求: ⑴静态存储一页文章,每行最多不超过80个字符,共N行。⑵分别统计出其中英文字母和空格数及整篇文章总字数。⑶统计某一字符串在文章中出现的次数,并输出该次数。 ⑶删除某一子串,并将后面的字符前移。 ⑷存储结构使用线性表,分别用几个子函数实现相应的功能。 7、广义表的应用 要求实现的广义表的建立、查找、输出、取表头和取表尾以及求深度等。 本设计用一个主控菜单程序控制,共分为6个子系统。(1)建立广义表(2)输出广义表(3)结点的查找(4)求广义表表头(5)求广义表表尾(6)求广义表的深度 演示程序以用户和计算机的对话方式执行。 8、哈夫曼树及其编码 问题描述: 设计一个利用哈夫曼算法的编码系统,重复地显示并处理以下项目,直到选择退出为止。基本要求: ⑴初始化:键盘输入或文件输入字符集大小n、n个字符和n个权值,建立哈夫曼树; ⑵编码:利用建好的哈夫曼树生成哈夫曼编码; ⑶输出树形的哈夫曼树及哈夫曼编码; ⑷设字符集及频度如下表: 字符 空格 A B C D E F G H I J K L M 频度 197 64 13 22 32 103 21 15 47 57 5 1 20 32 字符 N O P Q R S T U V W X Y Z 频度 1 15 48 16 80 23 8 18 1 51 1 9、校园导游咨询 问题描述: 设计一个校园导游程序,为来访的客人提供各种信息查询服务。基本要求: ⑴设计华东交通大学南区的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。⑵为来访客人提供图中任意景点相关信息的查询。 ⑶为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 10、地图着色问题 问题描述: 设计地图着色软件,对江西地图中11个地级市进行着色,要求相邻地级市所使用的颜色不同,并保证使用的颜色最少。基本要求: ⑴地图采用图型数据结构,每个地级市为一个节点,边表示对应的两个地级市相邻。⑵设计着色算法,保证邻接点不是同一种颜色。⑶演示程序以用户和计算机的对话方式进行。 11、内部排序算法比较 问题描述: 试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。基本要求: ⑴至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。 ⑵待排序表的表长不小于100,其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。⑶最后对结果作出简单分析,包括对各组数据得出结果波动大小的解释。 12、哈希表的设计与实现——线性探测再散列 问题描述: 设计哈希表实现电话号码查找系统。基本要求: ⑵ 设每个记录有下列数据项:电话号码、用户名、地址; ⑶ 从键盘输入各记录,分别以电话号码和用户名为关键字建立不同的哈希表; ⑷ 采用线性探测再散列的方法解决冲突; ⑸ 查找并显示给定电话号码的记录; ⑹ 查找并显示给定用户名的记录。 13、哈希表的设计与实现——二次探测再散列 问题描述: 设计哈希表实现电话号码查找系统。基本要求: (1)设每个记录有下列数据项:电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立不同的哈希表;(3)采用二次探测再散列的方法解决冲突;(4)查找并显示给定电话号码的记录;(5)查找并显示给定用户名的记录。 14、哈希表的设计与实现——链地址法 问题描述: 设计哈希表实现电话号码查找系统。基本要求: (1)设每个记录有下列数据项:电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立不同的哈希表;(3)采用链地址法解决冲突; (4)查找并显示给定电话号码的记录;(5)查找并显示给定用户名的记录。 15、火车售票系统 问题描述: 通过此系统可以实现售票、退票、车票剩余情况查询等功能。每张车票包含车次、车厢、座位信息。基本要求: ⑴在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、车厢、座位情况。⑵为简单起见,在此假设所有出售的车票均为同一车次的车票。⑶购票时,可以显示余票信息,并可以选择买哪张票。 ⑷退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票,而且退票可以再次销售。⑸演示程序以用户和计算机的对话方式进行。 16、图书管理系统 问题描述: 设计一个计算机管理系统完成图书管理基本业务。基本要求: ⑴每种书的登记内容包括书号、书名、著作者、现存量、库存量和借阅信息; ⑵对书号建立索引顺序表以提高查找效率; ⑶系统主要功能如下: ①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; ②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; ③归还:注销对借阅者的登记,改变该书的现存量。⑷演示程序以用户和计算机的对话方式进行。 17、客户消费积分管理系统 问题描述: 针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求: ⑴采用一定的存储结构进行客户信息的存储; ⑵对客户的信息可以进行修改、删除、添加; ⑶能够根据消费情况进行客户积分的累加; ⑷根据积分情况,对客户实行不同程度的打折优惠; ⑸演示程序以用户和计算机的对话方式进行。 18、产品进销存管理系统 问题描述: 针对某一种行业的库房的产品进销存情况进行管理。基本要求: ⑴采用一定的存储结构对库房的货品及其数量进行分类管理; ⑵可以实现进库房时,产品类的添加、产品的添加、产品数量的添加; ⑶能够查询库房每种产品的总量、进货日期、销出数量、销售时间等; ⑷可以实现产品出库房时,产品数量修改以及达到临界值提醒的功能; ⑸演示程序以用户和计算机的对话方式进行。 19、学生成绩管理系统的设计与实现 问题描述: 能够实现对学生成绩的常用管理功能。基本要求: ⑴采用一定的存储结构对学生成绩进行管理; ⑵可以进行成绩的录入、查询、修改、删除等操作; ⑶可以查询某门课程的平均分,学生的排名,不同分数段的学生人数及学生信息等; ⑷可以查询某学生的各课程分数,总分及学生的班级排名等; ⑸可以按学号排序输出全部学生的成绩信息、总分及班级排名等。⑹演示程序以用户和计算机的对话方式进行。20、通讯录管理系统的设计与实现——线性表 任务:利用线性表完成通讯录的一般性管理工作:(1)添加信息; (2)显示信息:可以按照手机或联系人的姓名拼音排序显示;(3)查找:用名字和手机号分别作为查找的依据,进行查找;(4)编辑信息;(5)删除信息;(6)保存到文件; 要求: (1)每条记录至少包括姓名、手机、QQ、电子邮箱、城市、邮编等信息。(2)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。 21、通讯录管理系统的设计与实现——哈希表 任务:利用哈希表完成通讯录的一般性管理工作:(1)添加信息; (2)显示信息:可以按照手机或联系人的姓名拼音排序显示;(3)查找:用名字和手机号分别作为查找的依据,进行查找;(4)编辑信息;(5)删除信息;(6)保存到文件; 要求: (1)每条记录至少包括姓名、手机、QQ、电子邮箱、城市、邮编等信息。(2)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。 22、简单目录管理系统的设计与实现 任务:利用树型结构设计并实现一个简单的目录管理系统,该系统可以对所有目录进行管理,如目录的新建、删除、查询、目录名称修改、按某种顺序输出所有目录(树的遍历操作)、以树型结构输出所有目录等功能。 23、最短旅程的求解 任务:有n个城市(编号从1到n),它们之间通过双向的道路相连。那里只有n-1条道路,但是,它们的连接方式使得从任意城市都可以走到其他的任何城市。一天,某个游客到了编号为k的城市。他计划从城市k开始,游遍所有的城市m1,m2,m3……,mi,…(不一定要按这个顺序旅游)。每个城市mi都是不同的,并且,也与k不同。他想要以最短的路程旅行完所有的城市(从城市k开始)。请你帮助计算一下,旅游完上述的城市最短需要多少路程。 24、迷宫求解 任务:以一个m*n的长方阵表示迷宫,设置两个门,一个入口,另一个是出口。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 要求: ⑴首先实现一个栈类型,然后编写一个求解迷宫的非递归程序。 ⑵求得的通路以三元组(i,j,d)的形式输出,其中(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑶输出迷宫图,以#号表示障碍物,„ ‟空格表示非障碍物,*表示通路。 25、家谱管理系统的设计与实现 任务:设计并实现一个简单的家谱管理系统。基本要求: (1)建立家族关系并能存储到文件中。(2)实现家族成员的添加、删除功能。 (3)可以查询家族成员的双亲、祖先、兄弟、孩子和后代等信息。(4)按某种顺序输出家谱信息(树的遍历操作)、以树型结构输出家谱资料等功能。(5)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。 26、宿舍管理查询软件 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)采用交互工作方式; (2)可以增加、删除、修改信息; (3)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序;(4)查询: a.按姓名查询 ;b.按学号查询 ;c按房号查询(5)输出任一查询结果(可以连续操作)。 27、语言中平衡符号的问题 要求:设C语言程序代码中包含如下符号/* */,(),[],{},编写程序检测一段C代码中上述符号是否正确。 28、算术表达式求解 问题描述:给定一个算术表达式,通过程序求出最后的结果。基本要求: (1)从键盘输入要求解的算术表达式; (2)采用栈结构进行算术表达式的求解过程;(3)能够判断算术表达式正确与否;(4)对于错误表达式给出提示; (5)对于正确的表达式给出最后的结果,并可以显示运算的整个过程。(6)演示程序以用户和计算机的对话方式进行。 29、表达式求值,并能给出分数,可供小学生作业练习的小程序 要求: ⑴建立试题库文件,从文件中,随机抽取n个题目; ⑵题目涉及加减乘除,带括号的混合运算; ⑶随时可以退出程序; ⑷保留历史分数,能回顾历史,给出与历史分数比较后的评价; ⑸界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。 30、数制转换问题 任意给定一个M进制的数x,实现如下要求:(1)求出此数x的10进制值; (2)实现对X向任意的一个非M进制的数的转换; (3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决);(4)提供交互界面,以便人机交互。 31、病人就医管理 编写一个程序实现就医管理。在病人就医过程中,主要发生三件事: ⑴预检,分科室,挂号。不同科室都是从1号开始挂号。如,内科1号,外科1号,五官科1号等; ⑵病人到达诊室,将病历本交给护士,排到等待队列中候诊。⑶护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。要求程序采用菜单方式,其选项及功能说明如下: ⑴挂号------预检,分科室,生成就诊号。 ⑵排队------输入病人的就诊号,加入到病人排队队列中。 ⑶就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。⑷查看排队------从队首到队尾列出所有的排队病人的病历号。⑸下班---------退出运行。 32、九宫格问题 在一个3×3的九宫格中有1—8这8个数字,混乱排序,一个空格随机地摆放在一个格子里。现要求将该九宫格调整为正常按逆序的格式。调整的规则是:每次只能将与空格(上、下或左、右)相邻的一个数字平移到空格中。编程实现这一问题的求解,并输出求解过程。 33、银行业务模拟 问题描述:设银行有四个服务窗口,一个等待队列, 每个窗口均可以办理存款、取款、挂失、还贷业务,每种业务所需的服务时间不同,优先级不同。客户到达银行后,先到打号机上打号,号票上包括到达时间、编号和需要办理的业务,然后在银行内等候。当任一服务窗口空闲时,处理等候客户中优先级最高,排在最前面的客户的业务。写一个上述银行业务的模拟系统,通过模拟方法求出客户在银行内逗留的平均时间和每个窗口办理的客户数及办理的每种业务数。基本要求:每个客户到达银行的时间和需要办理的业务随机产生,输出一天客户在银行的平均逗留时间和每个窗口每天办理的客户数和每种业务数。 34、停车场管理 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端);若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上依次等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 35、关键路径问题 问题描述: 设计一个程序,求出完成整项工程至少需要多少时间,以及整项工程中的关键活动。基本要求: ⑴对一个描述工程的AOE网,应判断其是否能够顺利进行。⑵若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。 36、地铁站建设问题 问题描述: 以南昌为例,假设要在南昌各辖区之间修建地铁来加快经济发展,但由于建设地铁的费用昂贵,因此需要设计一个程序,合理安排地铁的建设路线,使乘客可以沿地铁到达各个辖区,并使总的建设费用最小。基本要求: ⑴从包含各辖区的外部地图文件中读入辖区名称和各辖区间的直接距离。⑵根据读入的各辖区的距离信息,计算出应该建设哪些辖区间的地铁路线。⑶输出应该建设的地铁路线及所需要建设的总里程信息。37.服装销售系统 要求:包含三类用户:管理员、店长、销售员; (1)管理员功能:自身密码修改;其他用户的添加、删除;用户信息的修改、统计;商品信息的添加、修改、删除、查找、统计。 (2)店长功能:登录、注销、自身密码修改、自身信息修改;商品信息的修改、统计;查看日报表、月报表、商品销售量报表、营业员业绩报表;查找、浏览、修改商品储备信息。 (3)销售员功能:商品浏览、查找、出售商品,以及查看自己本日报表、本月报表。38.歌星大奖赛 要求: (1)在歌星大奖赛中,每位歌手演唱完,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。歌手的人数在大奖赛开始时确定。(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。 (3)建立数据文件,保存各位歌星比赛时的所有评委分数,包括最高分,最低分和最后得分,并对比赛结果进行排序输出; (4)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。 39.机房机位预约模拟系统 20台机器,从早8点到晚8点,每两个小时一个时间段。需要实现如下功能:(1)查询,根据输入时间,输出机位信息; (2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段的空机时间段。另外,如果用户要求在非空时间上机,则将用户信息插入该时间段的等待列表。(3)退出预定,根据输入的时间撤销该时间的预定。 (4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息。40.歌曲信息管理系统 制作一个歌曲信息管理系统,要求提供以下功能: (1)歌曲信息包括歌曲名、作者、演唱者、发行年月等。(2)可以对歌曲信息进行输入、删除、浏览。 (3)可以根据歌曲名、作者、演唱者查询歌曲信息。(4)提供按作者分组显示功能。(5)用文件存储信息。41.简单的试题库管理系统 试题库管理系统要求对试题进行集中、有序、有效的管理,更新方便、查询快捷、组卷灵活,降低劳动强度。 实现新试题库的建立,界面友好、操作方便。按试题的难易程度、题型、章节等分类录入、修改、删除试题,通过文本文件导入试题,并可以实现对相关试题的查询。按照要求自动组卷、生成文本格式试卷并输出,便于用户存档和编辑。同时,该系统还具备一定的安全性,通过用户名和密码登录。42.学生点名系统 要求: (1)读入外部文件存储的学生信息,显示学生历史点名记录;(2)可选择学生班级,对不同班级的学生进行点名。 (3)对学生按学号显示名字,进行点名,并接收键盘输入的信息,分别代表缺课、请假、正常;(4)将点名结果连带日期一起回存到外部文件。(5)提供交互界面,以便人机交互。43.猜数游戏 由计算机“想”一个数,并给出数值范围,请人猜,如果人猜对了,则一局游戏结束。否则,计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。计算机记录游戏者每次猜的次数,以此反映出猜数者“猜”的水平。 要求: (1)把猜数记录最好的前五名的数据保存在外部文件中,包括游戏者的名字,成绩和排名,并排序输出。 (2)提供交互界面,以便人机交互。第二篇:数据结构课程设计题目.
第三篇:数据结构课程设计题目
第四篇:数据结构课程设计参考题目
第五篇:数据结构课程设计题目