资源描述:
《数据结构题目(over)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计题目一、单链表的基本操作(每组必做)输入整数建立单链表[基本要求](1)建立单链表用尾插法建立带头结点的单链表h,从键盘输入各整型数据元素,以“-1”作为输入结束标志符。(2)遍历单链表h依次输出链表中各数据元素。(3)按序号查找查找单链表h中第i个元素并输出该元素。(4)插入在单链表h的第i个元素位置上插入x数据元素并遍历单链表h(5)删除删除单链表h的第i个数据元素,并返回第i个元素同时遍历单链表h(6)求表长求单链表的表长并输出表长(7)逆置单链表逆置带头结点的单链表h,逆置后的单链表利用原表中的结点空间,不重新申请空间。逆置后进行遍
2、历。(8)将一个元素插入到有序表中使表仍然有序带头结点的单链表中的数据元素是整型数且有序。将x插入到顺序表的适当位置上,保持表的有序性(9)将两个递增的有序表归并成一个递减的有序表,利用原表空间,不能重新申请空间[实现提示]:参照课上上机实验程序二、约瑟夫环问题[问题描述]设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。如此下去,直到所有人全部出列为
3、止。令n最大值取30。要求设计一个程序模拟此过程,求出出列编号序列。[基本要求]选择单向循环链表作为存储结构模拟整个过程,并依次输出出列的各人的编号.[实现提示]此题中循环链表可不设头结点,而且必须注意空表和"非空表"的界限.如:n=7,m=20时,若从第一个人开始报数,设每个人的编号依次为1,2,3,…开始报数,每个人的密码是3,1,7,2,4,8,4,则得到的出列次序为6,1,4,7,2,3,5.测试数据:(1)上面一组数据(2)m的初值为10,n=5,5个人的密码依次为:3,1,7,2,4出列顺序:5,4,2,3,1三、线性表的应用——学生成绩管理(
4、每人必读)1.以单链表作为存储结构,设计和实现某班某门课程成绩管理的完整程序。程序要求完成如下功能:(1)创建成绩链表,学生数据包含学生的学号、姓名和成绩。(2)可以在指定学号学生前插入学生成绩数据。(3)可以删除指定学号的学生数据。(4)可以计算学生的总数。(5)可以按学号和姓名查找学生。(6)可以显示所有学生的成绩。(7)可以把学生成绩按从高到低的顺序排列。[实现提示]学生数据程序运行时由用户从键盘输入,保存到一个单链表中typedefstructStudent/*学生类型定义*/{intscore;/*成绩*/charsno[5],sname[8];
5、/*学号,姓名*/}Student;当学生的学号为“#”时,也是表示数据输入的结束。单链表中保存的数据元素均为学生Student类型,则单链表定义如下:typedefstructNode/*结点类型定义*/{StudentstudentInfo;/*学生信息*/structNode*next;/*指向后继元素的指针域*/}LinkList;对学生的成绩按从高到低排序时,使用直接插入排序思想。另外,为了排序后还能在原单链表上继续进行操作,可把单链表中的内容复制到一个新单链表中,对新单链表排序,原单链表不变。2.以顺序表作为存储结构,设计和实现某班某门课程成绩
6、管理的完整程序。程序要求完成如下功能:(1)创建成绩表,学生数据包含学生的学号、姓名和成绩。(2)可以在指定位置的学生前插入学生成绩数据。(3)可以删除指定位置的学生数据。(4)可以计算学生的总数。(5)可以按学号和序号查找学生。(6)可以显示所有学生的成绩。(7)可以把学生成绩按从高到低的顺序排列。[实现提示]根据要求,可定义学生结构体类型如下:typedefstructStudent/*学生类型定义*/{intscore;/*成绩*/charsno[5],sname[8];/*学号,姓名*/}Student;当学生的学号为“#”时,表示数据输入的结束。
7、顺序表中保存的数据元素均为Student类型,则顺序表定义如下:typedefstruct/*顺序表类型定义*/{intlast;Studentdata[MAXSIZE];}SeqList;四、栈的应用1、十进制数到N进制数据的转换[基本要求]将从键盘输入的十进制数转换为N(如二进制,八进制)进制数据.[实现提示]利用顺序栈实现数制转换问题2、括弧匹配问题(表达式只有小括弧)3、括弧匹配问题(表达式有小括弧和中括弧)五、二叉树的运算[基本要求]以二叉链表为存储结构,给出一个可进行二叉树基本操作的完整程序,具有以下功能:(1)根据输入字符序列,建立二叉链表;
8、(2)用递归算法实现输出二叉树的前序、中序、后序遍历序列;(3)用