集合的交并差运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void jihe::JiaoJi()
{
LinkList *L1,*L2,*L3;
L1=a[0].L;
L2=a[1].L;
L3=a[2].L;
LinkList *p1=L1->next,*p2,*s;
p1=L1->next;
while (p1!=NULL)
{
p2=L2->next;
while ((p2!=NULL) && (p2->data!=p1->data))
附录:
#include <stdio.h>
#include<iostream.h>
#include <stdlib.h>
typedef struct LNode//定义单链表结点类型
{
char data;
struct LNode *next;
} LinkList;
class jihe
{
int length;
《数据结构》
课程设计说明书
题 目
集合的并交差运算
学 号
姓 名
指导教师
日 期
内蒙古科技大学课程设计任务书
课程名称
数据结构课程设计
设计题目
集合的并交差运算
指导教师
周、康、兰
时间
一、教学要求
1.掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能
int low=1;ListLength(i);
int high=a[i].length;
int mid;
int j=0;
LinkList *p;
while(low<=high)
{
mid=(low+high)/2;
j=0;
p=a[i].L;//将指针指向链表的头结点首地址
while(j<mid)
{
p=p->next;
4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问
六、建议参考资料
1.《数据结构(C语言版)》严蔚敏、吴伟民主编清华大学出版社2004.11
2.《数据结构课程设计案例精编(用C/C++描述)》,李建学 等 编著,清华大学出版社 2007.2
3.《数据结构:用面向对象方法与C++语言描述》,殷人昆主编,清华大学出版社 2007
j++;
}
q=p->next;
p->next=q->next;
s=q->data;
free(q);
cout<<"删除数值:"<<s<<endl;
cout<<"是否继续删除(y/n),并以回车键结束!"<<endl;
cin>>z;
}while(z=='y');
}
/***************************并集*****************************************/
if (p1==NULL)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=p2->data;
s->next=L3->next;
L3->next=s;
}
p2=p2->next;
}
}
/***************************交集*********************************************/
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
集合的并交差运算
以链表存储集合,在此基础上完成对集合的操作。
}
q=(LinkList *)malloc(sizeof(LinkList));
q->data=data;
q->next = p->next;
p->next=q;
cout<<"插入成功!";
}
cout<<"是否继续插入(y/n),并以回车键结束!"<<endl;
cin>>z;
}while(z=='y');
getchar();
}
/****************************插入******************************************/
void jihe::ListInsert(int i)
{
char z;
do
{
cout<<"请输入插入位置以及数值:"<<endl;
4. 设计完成的软件要便于操作和使用
5. 设计完成后提交课程设计报告
四、进度安排
资料查阅与讨论(1天)
系统分析(2天)
系统的开发与测试(5天)
编写课程设计说明书和验收(2天)
五、评分标准
1. 根据平时上机考勤、表现和进度,教师将每天点名和检查
2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
{
cout<<"请为集合输入数值(以回车键结束):";
char c;
LinkList *p,*r;
a[i].L=(LinkList*)malloc(sizeof(LinkList));
a[i].L->next=NULL;
r=a[i].L;
cin>>c;
while(c!='\n')
{
p=(LinkList*)malloc(sizeof(LinkList));
要求设计类(或类模板)来描述集合,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:
输入、输出集合
查询集合中的元素
在集合中进行插入、删除元素
实现集合的并、交、差运算
并设计主函数测试该类。
三、设计要求及成果
1. 分析课程设计题目的要求
2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行
while (p->next != NULL)
{
p = p->next;
a[i].length ++;
}
return a[i].length;
}
/****************************输入*************************************/
void jihe::ListCreat(int i) /*尾插法插入元素*/
void Search( int i);
};
jihe a[3];jihe b;
/*************************长度****************************************/
int jihe::ListLength(int i)
{
LinkList *p;
p = a[i].L;
j++;
}
if(key==p->data)
{
cout<<"位置为"<<mid<<"查找成功!按回车键返回主菜单"<<endl;
getchar();
return;
}
else if(key<p->data)
high=mid-1;
else
low=mid+1;
}
cout<<endl<<"对不起,集合中没有该元素!按回车键返回主菜单"<<endl;
if(c==' ')
{}
else
{
p-ቤተ መጻሕፍቲ ባይዱdata=c;
r->next=p;
r=p;
}
c=cin.get();
}
r->next=NULL;
cout<<"输入完毕,请按回车键返回主菜单!"<<endl;
getchar();
}
/*****************************输出***********************************/
int d;
char data;
cin>>d;cin>>data;
LinkList *q,*p;
int j;int n;n=ListLength(i);
if(d<1 || d>n+1)
cout<<"操作失败!";
else
{
j=0;
p=a[i].L;
while(j<d-1)
{
p=p->next;
j++;
int d;
cin>>d;
int n;n=ListLength(i);
LinkList *p,*q;
int j;
char s;
while(d<1 || d>n)
{
cout<<"对不起!您输入的位置有误,请重新输入!"<<endl;
cin>>d;
}
j=0;
p=a[i].L;
while(j<d-1)
{
p=p->next;
s->data=p1->data;
s->next=L3->next;
L3->next=s;
p1=p1->next;
}
p2=L2->next;
while (p2!=NULL)
{
p1=L1->next;
while((p1!=NULL)&&(p1->data!=p2->data))
p1=p1->next;
void jihe::BingJi()
{
LinkList *L1,*L2,*L3;
L1=a[0].L;
L2=a[1].L;
L3=a[2].L;
LinkList *p1;LinkList *p2;LinkList *s;
p1=L1->next;
while (p1!=NULL)
{
s=(LinkList *)malloc(sizeof(LinkList));
}
if (p2==NULL)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=p1->data;
s->next=L3->next;
L3->next=s;
}
p1=p1->next;
}
}
int xz()
{
cout<<"请选择集合:\n\t1、集合A \t2、集合B"<<endl;
int i;
cin>>i;
for(;i!=1 && i!=2;)
{cout<<"指令错误,请正确输入!"<<endl;
LinkList *L;
public:
jihe()
{
L=(LinkList*)malloc(sizeof(LinkList));
length=0;
L->next=NULL;
}
~jihe()
{
LinkList *p;
while (L->next)
{
p = L->next;
L->next = p->next;
L3=a[2].L;
}
else
{
L2=a[0].L;
L1=a[1].L;
L3=a[2].L;
}
LinkList *p1=L1->next,*p2,*s;
while (p1!=NULL)
{
p2=L2->next;
while ((p2!=NULL) && (p2->data!=p1->data))
{
p2=p2->next;
void jihe::ListDisp(int i)
{
LinkList *p;
p=a[i].L->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
a[2].L->next=NULL;
cout<<endl;
cout<<"输出完毕,请按回车键返回主菜单!"<<endl;
}
}
/*****************************差集******************************************/
void jihe::ChaJi(int i)
{
LinkList *L1,*L2,*L3;
if(i==1)
{
L1=a[0].L;
L2=a[1].L;
getchar();
return;
}
/*********************************删除****************************************************/
void jihe::ListDelete(int i)
{
char z;
do
{
cout<<"请输入要删除元素的位置:"<<endl;
}
/*********************************查找***************************************************/
void jihe::Search(int i)
{
char key;
cout<<"输入要查找的关键字:"<<endl;
cin>>key;
{
p2=p2->next;
}
if ((p2!=NULL) && (p2->data==p1->data))
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=p1->data;
s->next=L3->next;
L3->next=s;
}
p1=p1->next;
free(p);
}
}
void ListCreat(int i);
void ListDisp(int i);
void BingJi();
void JiaoJi();
void ChaJi(int i);
void ListInsert(int i);
void ListDelete(int i);
int ListLength(int i);
相关文档
最新文档