数据结构程序设计题目共29题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

题目1:设计一元多项式简单计算 (1)

题目2:链表应用1 (1)

题目3:链表应用2 (1)

题目4:通讯录 (2)

题目5:停车场管理系统................................................ 错误!未定义书签。题目6:约瑟夫环 (3)

题目7:运动会分数统计 (3)

题目8:文学研究助手问题 (3)

题目9:银行业务模拟与离散事件模拟 (4)

题目10:学生信息管理系统任务(用顺序表/链表)....... 错误!未定义书签。题目11:文章编辑功能 ................................................. 错误!未定义书签。题目12:实验室管理..................................................... 错误!未定义书签。题目13:二叉树的基本操作(建立、求二叉树树深度、遍历).. (4)

题目14:纸牌游戏任务 (5)

题目15:算术表达式求值 (5)

题目16:内部排序算法比较 (5)

题目17:哈夫曼树的构造和哈夫曼编码/译码 (6)

题目18:构造可以使n个城市连接的最小生成树 (7)

题目19:交通咨询系统中的最短路径 (7)

题目20:集合的交、并、差运算 ................................... 错误!未定义书签。题目21:长整数四则运算 (7)

题目22:机订票系统..................................................... 错误!未定义书签。题目23:图书管理系统 (8)

题目24:哈希表应用 (8)

题目25:模拟旅馆管理系统的一个功能——床位的分配与回收 (9)

题目26:地图着色问题 (9)

题目27:俄罗斯套娃问题 (10)

题目28:扫雷 (11)

题目29:用C语言设计一个日历系统 (11)

题目1:设计一元多项式计算

【任务要求】

(1)能够按照指数降序排列建立并输出多项式;

(2)能够完成两个多项式的相加、相减,并将结果输入;

实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。

要求:在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;【测试数据】

自行选择

题目2:链表应用1

【任务要求】

实现两个链表的合并

基本功能要求:

(1)建立两个链表A和B,链表元素个数分别为m和n个。

(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线形表C,使得:

当m>=n时,C=x1,y1,x2,y2,...xn,yn, (x)

当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn

输出线性表C

(3)用直接插入排序法对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)

题目3:链表应用2

【问题描述】

已知非空线性链表第一个链结点的指针为list,写出下列各项操作的算法程序。

(1)逆转该线性链表;

(2)删除线性链表中从左往右第一个数据为data的链结点;

(3)删除从第I个链结点开始的连续k个结点。

【任务要求】

设计一组输入数据并编写完整的程序。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。

【提示】

1)逆转一个链表是指在不增加新结点的前提下,依次改变链表中结点的连接方向。

2)删除数据结点时,首先判断链表是否为空,若非空,先判断第一个结点是否满足条件,若是则删除;否则从第二个结点开始顺序查找,直到找到为止,然后删除;对任何不满足条件的情况都报告相应提示信息。

3)从第I个结点开始连续删除k个结点时,考虑以下两种情况:当I=1时,从第一个开始删除即可;当I>1时,先找到前一个结点然后再连续删除K个结点。最后释放各个结点空间。【测试数据】

自行设定

题目4:通讯录

【问题描述】

该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。通讯者所包含信息请自行设定

【任务要求】

菜单内容:

(0)通讯录链表的建立

(1)通讯者结点的插入

(2)通讯者结点的查询

(3)通讯者结点的删除

(4)通讯录链表的输出

(5)退出管理系统

设计要求:

使用0~5来选择菜单项,其他输入则不起作用。

功能函数设计

5个不同功能的算法实现编程题,目的是练习利用链表结构来解决实际应用问题的能力,进一步理解和熟悉线形表的链式存储结构。

【测试数据】

自行设定,注意边界等特殊情况。

题目6:约瑟夫环

【问题描述】

编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。

【任务要求】

利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。

输入数据:输入m的初值,n ,输入每个人的密码,建立单循环链表。

输出形式:建立一个输出函数,将正确的输出序列

【测试数据】

m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4。

题目7:运动会分数统计

【问题描述】

参加运动会有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).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

输出形式:有中文提示,各学校分数为整型

相关文档
最新文档