• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签:

资源简介

c++ , 链表实现 : 集合的交叉并运算。 并集 两个集合可以相"加"。A和B的并集是将A和B的元素放到一起构成的新集合。给定集合A,B,定义运算∪如下:A∪B = {e|e∈A 或 e∈B}。A∪B称为A和B的并集。 交集 一个新的集合也可以通过两个集合"共"有的元素来构造。A和B的交集,写作A∩B,是既属于A的、又属于B的所有元素组成的集合。若A∩B={\displaystyle \varnothing },则A和B称作不相交。 差集 两个集合也可以相"减"。A在B中的相对补集,写作B−A,是属于B的、但不属于A的所有元素组成的集合。在特定情况下,所讨论的所有集合是一个给定的全集U的子集。这样,U−A称作A的绝对补集,或简称补集(余集),写作A′或CUA。补集可以看作两个集合相减,有时也称作差集。

资源截图

代码片段和文件信息

#include
using namespace std;
struct Node {
int  data;
Node *next; //表示数据元素之间逻辑关系的指针
};
class linkList {
Node*head;  //链表只要知道头在哪里,就可以通过指针找到全部的
public :
// 生成带头结点的空链表
linkList() {
head=new Node;   // 动态分配一个结点空间
head->next=NULL; // 生成带头结点的空链表
}
//创建链表
int  Create_List() {
cout<<“\n---输入元素的个数:“;
int n;
cin>>n;
cout<<“\n---输入元素:“;
Node *tail=head;//tail记下当前链表的尾巴结点
for(int i=1; i<=n; i++) {
int  e;
cin>>e;
Node *s=new Node;
s->data=e;
s->next=NULL;
tail->next=s;
tail=s;
}
cout< }
void Insert_first(int x) {
Node*s=new Node;
s->data=x;
s->next=head->next;
head->next=s;
}
int search(int xNode *&px) {
Node*p=head->next;
int count=1;
while(p!=NULL) {
if(p->data == x ) {
px=p;
return count;
}
p=p->next;
count++;
}
return 0;
}
//显示链表
void display() {
Node *p=head->next;
if(p==NULL) {
cout<<“空表\n“;
return;
}
while(p!=NULL) {
cout<data<<“ “;
p=p->next;
}
cout< }
static linkList  bin( linkList A linkList B) {
linkList result;
Node *p=(A.head)->next;
while(p!=NULL) {
result.Insert_first(p->data);
p=p->next;
}
p=(B.head)->next;
while(p!=NULL ) {
Node * px;
if(A.search(p->datapx)==0 )
result.Insert_first(p->data);
p=p->next;
}
return result;

}
static linkList  jiao( linkList A linkList B) {
linkList result;
Node *p=(A.head)->next;
while(p!=NULL) {
Node * px;
if(B.search(p->datapx)!=0 )
result.Insert_first(p->data);
p=p->next;
}

return result;

}
static linkList  jian(linkList A linkList B) {
linkList result;
Node *p=(A.head)->next;
while(p!=NULL) {
Node * px;
if(B.search(p->datapx)==0 )
result.Insert_

评论

共有 条评论

相关资源