好文档 - 专业文书写作范文服务资料分享网站

实习报告书-2013013236-张晋鹏

天下 分享 时间: 加入收藏 我要投稿 点赞

数据结构与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 -

实习报告书-2013013236-张晋鹏

数据结构与C语言综合训练实习报告信息工程学院数据结构与C语言综合训练报告(2013~2014学年第二学期)报告题目:集合操作姓名:张晋鹏专业:信息管理与信息系统年级班级:信
推荐度:
点击下载文档文档为doc格式
1f02z8zsnk2v3bv3zrgn
领取福利

微信扫码领取福利

微信扫码分享