数据结构与C语言综合训练实习报告
信息工程学院
数据结构与C语言综合训练报告
(2013~2014学年第 二学期)
报告题目:集合操作
姓 名:张晋鹏
专 业:信息管理与信息系统 年级班级:信管132 指导教师:王娟勤 毛锐 完成日期:2014年7月21日
- 1 -
数据结构与C语言综合训练实习报告
集合操作
【摘要】用单链表模拟有序集合,实现集合中插入一个元素,删除一个元素,集合的交、并、差运算。
【关键词】单链表、插入、删除、交集、并集、差集 一、综合训练的目的和要求
(一)、目的
1、巩固和加深自己对C语言和数据结构基本知识的理解和应用;
2、掌握C语言编程的技巧和程序调试的基本技能; 3、利用C语言进行简单的软件设计; 4、掌握书写程序设计的能力;
5、提高运用C语言、数据结构解决实际问题的能力。
(二)、要求
1、分析综合训练题目的要求;
2 、写出详细设计说明;
3、 编写程序代码,调试程序使其能正确运行; 4、 设计完成的软件要便于操作和使用; 5、 设计完成后提交课程设计报告。
二、综合训练任务
用单链表模拟有序集合,实现集合中插入一个元素,删除一个元素,集合的交、并、差运算。
1、用单链表存放集合中的元素,链表中的元素按大小存放; 2、实现集合加入一个元素删除一个元素的元素操作; 3、实现集合的交、并、差集合操作;
要求:完成任务描述中的各种功能,自己可以适当增加必要的功能。
三、总体设计
程序设计组成框图:
集合操作 单集合 双集合 插入、删除返回退出- 2 - 交、差、并返回退出 数据结构与C语言综合训练实习报告
流程图
开始 菜单 双集合的交、差、并 单集合的插入删除 输出 输出 结束 四、详细设计说明
具体思想:把编好的程序根据老师的要求,以菜单的形式表示出来。
//------------线性表的单链表存贮结构 typedef struct LNode {
ElemType data; struct LNode *next; } LNode,*LinkList;
(一)、主函数用switch语句实现菜单操作
int main() {
int x; while(1) {
system(\
printf(\ printf(\ 菜单 |\\n\ printf(\ 1.单集合操作 |\\n\ printf(\ 2.双集合操作 |\\n\ printf(\ 3.退出 |\\n\ printf(\ 请输入要进行的操作: |\\n\
- 3 -
数据结构与C语言综合训练实习报告
printf(\ scanf(\ switch(x) {
case 1:
func1(); break; case 2:
func2(); break; case 3:
return 0; default:
printf(\输入错误!请重新输入!\\n\ break; } } }
(二)、分模块操作、
1、模块一:对单链表进行操作
(1)、创建单链表 int length; int m,y;
ElemType temp,i; LinkList L;
L=InitLinkList();
system(\
printf(\请输入L链表的长度:\ scanf(\
printf(\请输入L链表的元素:\ for(m=1; m<=length; m++) {
scanf(\
LinkListInsert(L,temp,m); }
printf(\创建的单链表L为:\ LinkListTraverse(L,Visit);
printf(\建立好的集合L为:\
DelRepeated(L); (2)、对单链表进行插入、删除操作 switch(y) {
case 1:/*插入*/
- 4 -
数据结构与C语言综合训练实习报告
printf(\请输入要插入的元素:\ scanf(\
printf(\请输入要插入的位置:\ scanf(\ LinkListInsert(L,i,m);
printf(\插入一个元素后的集合为:\ // SelectSort(L); DelRepeated(L);
LinkListTraverse(L,Visit); break; case 2:/*删除*/
printf(\请输入要删除的位置:\ scanf(\ LinkListDelete(L,m);
printf(\删除一个元素后的集合为:\ LinkListTraverse(L,Visit); break; case 3:
printf(\排好序后的集合为:\\n\ SelectSort(L);
LinkListTraverse(L,Visit); break; case 4: return; case 5:
exit(0); default:
printf(\输入错误!请重新输入!\\n\ break;
2、对双集合进行操作
主要是调用三个函数实现对双集合的具体操作。其中包括求交集函数,求差集函数,求并集函数
void bingjilist(LinkList La,LinkList Lb,LinkList Lc); void jiaojilist(LinkList La,LinkList Lb,LinkList Lc); void chajilist(LinkList La,LinkList Lb,LinkList Lc);
3、为了实现上述程序功能,需要定义单链表操作函数
LinkList InitLinkList(void)//创建空链表;
ElemType GetElem_L(LinkList La,ElemType &e,int i);//从单链表中取得某元素 用e返回中第i个数据元素的值
int LocateElem(LinkList L,ElemType e,int &);
返回中第一个与e满足关系的数据元素的位序。若这样的元素不存在,则返回值0. LinkListTraverse( L,visit());//遍历单链表 依次对L中的每个数据元素调用函数visit()。 void Visit(ElemType e);//访问链表中的元素
- 5 -