数据结构课程设计报告 单链表表示集合 实现交并差

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、审核批准意见
教研室主任(签字)
设计总说明
该设计主要应实现以Байду номын сангаас功能:
1.利用尾差法建立单链表
2.对于输入的链表进行有序排列
3.删除有序链表中不符合要求的元素
4.调用函数对单链表进行交,并,差运算,并输出
系统主要由8个模块组成,分别是:
1.单链表的建立
2.单链表的有序排列
3.删除单链表中不符合条件的元素
p->next=NULL;
}
p1=p1->next;
}
return Head;
}
5.2系统函数详细介绍
(1) void InitLinkList(LinkList Head);
//初始化集合
(2) int Check(char ch,LinkList Head);
//检查p1或p2所指向数据结点该不该加入到Head为起始的集合中
4.主函数也即main()依次调用成员函数。
4.4系统功能模块图
系统功能模块图
5.
5.1 结构体的详细定义
LinkList Merge(LinkList Head1,LinkList Head2)
{
LinkList Head=(Node*)malloc(SIZE);
Head->data='\0';Head->next=NULL;
p=newNode;
p->next=NULL;
}
p2=p2->next;
}
return Head;
}
//两个集合的差集
LinkList Deprive(LinkList Head1,LinkList Head2)
{
LinkList Head=(Node*)malloc(SIZE);
Node *p=Head;
输入数据:输入10个以内的字符进行程序测试。
1、自己输入两了任意集合。
2、用对话框的形式显示集合运算的结果。
3、优化对话框。
四、应收集的资料及主要参考文献:
由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上机练习了“线性表”的基本操作。
参考文献:
1.数据结构-C语言描述,西安电子科技大学出版社,2011.5,耿国华编著
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
2.
用有序单链表表示集合,实现集合的交、并、差运算。
3.
3.1 数据需求
字符范围:小写字母a,b,...,y,z,大写字母A,B,...Y,Z,和数字0,1,...8,9;
Node *p1=Head1->next;
while(p1!=NULL)
{
if(IsExist2(p1->data,Head2)==1)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=newNode;
p=newNode;
(7)PrintLinkList(LinkList Head):打印集合元素
4.2 系统包含的函数
InitLinkList(LinkList Head)
Check(char ch,LinkList Head)
Merge(LinkList Head1,LinkList Head2)
IsExist2(char data,LinkList Head)
2.数决结构与算法分析(C++版),电子工业出版社,2005.7,Clifford A.Shaffer编著
3.数据结构与算法,科学出版社,2005.08,赵文静 祁飞等编著
4.数据结构-C++语言描述,西安交通大学出版社,1999.01,赵文静编著
5. VC++深入详解,电子工业出版社,2007.7,孙鑫,于安萍编著
西安建筑科技大学华清学院
课程设计(论文)
题目:
院(系):
专业班级:计算机
姓名:
学号:
指导教师:
2016年9月8日
西安建筑科技大学华清学院课程设计(论文)任务书
专业班级:学生姓名:指导教师(签名):
一、课程设计(论文)题目
集合运算:使用链表来表示集合,完成集合的合并,求交集等操作。
二、本次课程设计(论文)应达到的目的
数据对象:属于同一个结构体的集合。
数据关系:具有线性关系。
3.2 基本功能需求
可快速的分别求出两个字符集合的交、并、差。
3.3 非功能性需求
用户界面需求:简洁、易用、易懂、友好的用户界面。
硬件要求:装有Visual C++6.0的计算机。
可靠性需求:保证用户在正常使用本系统时,用户的操作或误操作不会产生数据的丢失。
(3)LinkList Merge(LinkList Head1,LinkList Head2);
//合并两个集合
(4)int IsExist(char data,LinkList Head);
int IsExist2(char data,LinkList Head);
//集合A中的元素,B中是否存在
2.求两个集合的差集时,Deprive(LinkList Head1,LinkList Head2)函数首先也调用了InitLinkList(LinkList Head)函数,后面循环调用IsExist2(char data,LinkList Head)函数。
3.求两个集合交集时,Insection(LinkList Head1,LinkList Head2)函数的思路同Deprive(LinkList Head1,LinkList Head2)函数类似,它同样也是先进行初始化,首先调用了InitLinkList(LinkList Head)函数,后面循环调用IsExist(char data,LinkList Head)函数。
p->next=NULL;
}
}
p1=p1->next;
p2=p2->next;
}
while(p1!=NULL)
{
if(Check(p1->data,Head)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=newNode;
p->next=newNode;
p=newNode;
p->next=NULL;
}
if(Check(p2->data,Head)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p2->data;
p->next=newNode;
p=newNode;
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
主函数也即main()依次调用成员函数。
5.4 具体模块设计
把各个模块用图示的方法画出流程图,注意图下方要有“图号 图名”,例如“图5-1宿舍信息的录入流程图”
6.
本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行。调试前须做好准备工作:
(4)IsExist(char data,LinkList Head);
IsExist2(char data,LinkList Head):
集合A中的元素,B中是否存在
(5)Deprive(LinkList Head1,LinkList Head2):两个集合的差集
(6)Insection(LinkList Head1,LinkList Head2):两个集合交集
求两个集合交集时,Insection(LinkList Head1,LinkList Head2)函数的思路同Deprive(LinkList Head1,LinkList Head2)函数类似,它同样也是先进行初始化,首先调用了InitLinkList(LinkList Head)函数,后面循环调用IsExist(char data,LinkList Head)函数。
Node *p1=Head1->next;
Node *p2=Head2->next;
Node *p=Head;
while(p1!=NULL&&p2!=NULL)
{
if(p1->data==p2->data)
{
if(Check(p1->data,Head)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=newNode;
p=newNode;
p->next=NULL;
}
}
else
{
if(Check(p1->data,Head)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
4.集合交集
5.集合并集
6.集合差集
7.单链表输出
8.主函数
《数据结构》课程设计
—集合运算
1.
“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础。
(5)LinkList Deprive(LinkList Head1,LinkList Head2);
//两个集合的差集
(6)LinkList Insection(LinkList Head1,LinkList Head2);
//两个集合交集
(7)void PrintLinkList(LinkList Head);
5.
4.1 数据结构
数据结构的基本操作实现如下:
(1) InitLinkList(LinkList Head):初始化集合
(2) Check(char ch,LinkList Head):检查p1或p2所指向数据结点该不该加入到Head为起始的集合中
(3)Merge(LinkList Head1,LinkList Head2):合并两个集合
Deprive(LinkList Head1,LinkList Head2)
Insection(LinkList Head1,LinkList Head2)
PrintLinkList(LinkList Head)
4.3 函数间的关系
1.求两个集合的并集时,Merge(LinkList Head1,LinkList Head2)函数首先调用了InitLinkList(LinkList Head)函数,多次调用了Check(char ch,LinkList Head)函数。
p=newNode;
p->next=NULL;
}
p1=p1->next;
}
while(p2!=NULL)
{
if(Check(p2->data,Head)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p2->data;
p->next=newNode;
//打印集合元素
5.3 系统功能模块介绍
求两个集合的并集时,Merge(LinkListHead1,LinkList Head2)函数首先调用了InitLinkList(LinkList Head)函数,多次调用了Check(char ch,LinkList Head)函数。
求两个集合的差集时,Deprive(LinkList Head1,LinkList Head2)函数同Merge(LinkList Head1,LinkList Head2)函数一样首先也调用了InitLinkList(LinkList Head)函数,后面循环调用IsExist2(char data,LinkList Head)函数。
数据结构是实践很强的课程,课程设计是加强学生实践能力的一个强有力的手段。课程设计要求我们完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于我们基本程序素养的培养和软件工作者工作作风的训练。将起到显著的促进作用。
本题目要达到目的:熟练掌握链表的各种操作
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)
相关文档
最新文档