当前位置:文档之家› 数据结构课程设计报告 单链表表示集合 实现交并差

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

(3)LinkList Merge(LinkList Head1,LinkList Head2);
//合并两个集合
(4)int IsExist(char data,LinkList Head);
int IsExist2(char data,LinkList Head);
//集合A中的元素,B中是否存在
(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):两个集合交集
//打印集合元素
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)函数。
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;
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;
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
2.
用有序单链表表示集合,实现集合的交、并、差运算。
3.
3.1 数据需求
字符范围:小写字母a,b,...,y,z,大写字母A,B,...Y,Z,和数字0,1,...8,9;
(5)LinkList Deprive(LinkList Head1,LinkList Head2);
//两个集合的差集
(6)LinkList Insection(LinkList Head1,LinkList Head2);
//两个集合交集
(7)void PrintLinkList(LinkList Head);
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;
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)函数。
数据对象:属于同一个结构体的集合。
数据关系:具有线性关系。
3.2 基本功能需求
可快速的分别求出两个字符集合的交、并、差。
3.3 非功能性需求
用户界面需求:简洁、易用、易懂、友好的用户界面。
硬件要求:装有Visual C++6.0的计算机。
可靠性需求:保证用户在正常使用本系统时,用户的操作或误操作不会产生数据的丢失。
输入数据:输入10个以内的字符进行程序测试。
1、自己输入两了任意集合。
2、用对话框的形式显示集合运算的结果。
3、优化对话框。
四、应收集的资料及主要参考文献:
由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上机练习了“线性表”的基本操作。
参考文献:
1.数据结构-C语言描述,西安电子科技大学出版社,2011.5,耿国华编著
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;
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为起始的集合中
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);
求两个集合交集时,Insection(LinkList Head1,LinkList Head2)函数的思路同Deprive(LinkList Head1,LinkList Head2)函数类似,它同样也是先进行初始化,首先调用了InitLinkList(LinkList Head)函数,后面循环调用IsExist(char data,LinkList 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;
4.集合交集
5.集合并集
6.集合差集
7.单链表输出
8.主函数
《数据结构》课程设计
—集合运算
1.
“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础。
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)函数。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
主函数也即main()依次调用成员函数。
5.4 具体模块设计
把各个模块用图示的方法画出流程图,注意图下方要有“图号 图名”,例如“图5-1宿舍信息的录入流程图”
6.
本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行。调试前须做好准备工作:
相关主题