数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交 5
数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示ab的交,且c中的元素也递增有序。分别以顺序表和单链式表为存储结构,编写...
数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交,且c中的元素也递增有序。分别以顺序表和单链式表为存储结构,编写程序
展开
3个回答
展开全部
#include<iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
class LinkList
{
public:
Node * intLinkList(int a[],int n)
{
first=new Node;
first->next=NULL;
for(int i=(n-1);i>=0;i--)
{
Node *s;
s=new Node;
s->data=a[i];
s->next=first->next;
first->next=s;
}
return first;
}
void PrintList()
{
Node *p;
p=first->next;
while(p)
{
cout<<p->data<<"\t";
p=p->next;
}
}
private:
Node *first;
};
void Interest(Node *A, Node *B)
{
Node *p, *q;
p=A->next; q=B->next;
while(p && q)
{
if(p->data<q->data)
{
A->next=p->next;
p=p->next;
}
else if(p->data>q->data) q=q->next;
else{
p=p->next;
q=q->next;
}
}
}
void Bingji(Node *A, Node *B)
{
Node *p, *q,*r;
p=A->next; q=B->next;
while(p&&q)
{
if(p->data<q->data){ r=p; p=p->next;}
else if(p->data>q->data)
{
B->next=q->next;
q->next=p;
r->next=q;
q=B;
}
else if(p->data=q->data){
r=p;
p=p->next;
q=q->next;
}
}
r->next=q;
}
void Chaji(Node *A, Node *B)
{
Node *p, *q;
p=A->next; q=B->next;
while(p &&q)
{
Node *r;
if(p->data<q->data)
{
r=p;
p=p->next;
}
else if(p->data>q->data) q=q->next;
else{
Node *s;
s=p;
r->next=p->next;
p=r->next;
delete s;
}
}
}
void main()
{
cout<<"************两个集合的 交,并,差 运算**************"<<endl;
int A1[]={ 1,2,3,4,5,6};
int B1[]={ 3,4,5,6,7,8};
int A2[]={ 1,2,3,4,5,6};
int B2[]={ 3,4,5,6,7,8};
int A3[]={ 1,2,3,4,5,6};
int B3[]={ 3,4,5,6,7,8};
LinkList L1; LinkList P1;
LinkList L2; LinkList P2;
LinkList L3; LinkList P3;
Node *Head1=L1.intLinkList(A1 ,6);
Node *Head12=P1.intLinkList(B1 ,6);
Node *Head2=L2.intLinkList(A2 ,6);
Node *Head22=P2.intLinkList(B2 ,6);
Node *Head3=L3.intLinkList(A3 ,6);
Node *Head32=P3.intLinkList(B3 ,6);
Interest(Head1,Head12);
cout<<"两个集合的交集是:";
L1.PrintList();
cout<<endl<<"****************************"<<endl;
Bingji(Head2,Head22);
cout<<"两个集合的并集是:";
L2.PrintList();
cout<<endl<<"****************************"<<endl;
Chaji(Head3,Head32);
cout<<"两个集合的差集是:";
L3.PrintList();
cout<<endl<<"****************************"<<endl;
}
using namespace std;
struct Node
{
int data;
Node *next;
};
class LinkList
{
public:
Node * intLinkList(int a[],int n)
{
first=new Node;
first->next=NULL;
for(int i=(n-1);i>=0;i--)
{
Node *s;
s=new Node;
s->data=a[i];
s->next=first->next;
first->next=s;
}
return first;
}
void PrintList()
{
Node *p;
p=first->next;
while(p)
{
cout<<p->data<<"\t";
p=p->next;
}
}
private:
Node *first;
};
void Interest(Node *A, Node *B)
{
Node *p, *q;
p=A->next; q=B->next;
while(p && q)
{
if(p->data<q->data)
{
A->next=p->next;
p=p->next;
}
else if(p->data>q->data) q=q->next;
else{
p=p->next;
q=q->next;
}
}
}
void Bingji(Node *A, Node *B)
{
Node *p, *q,*r;
p=A->next; q=B->next;
while(p&&q)
{
if(p->data<q->data){ r=p; p=p->next;}
else if(p->data>q->data)
{
B->next=q->next;
q->next=p;
r->next=q;
q=B;
}
else if(p->data=q->data){
r=p;
p=p->next;
q=q->next;
}
}
r->next=q;
}
void Chaji(Node *A, Node *B)
{
Node *p, *q;
p=A->next; q=B->next;
while(p &&q)
{
Node *r;
if(p->data<q->data)
{
r=p;
p=p->next;
}
else if(p->data>q->data) q=q->next;
else{
Node *s;
s=p;
r->next=p->next;
p=r->next;
delete s;
}
}
}
void main()
{
cout<<"************两个集合的 交,并,差 运算**************"<<endl;
int A1[]={ 1,2,3,4,5,6};
int B1[]={ 3,4,5,6,7,8};
int A2[]={ 1,2,3,4,5,6};
int B2[]={ 3,4,5,6,7,8};
int A3[]={ 1,2,3,4,5,6};
int B3[]={ 3,4,5,6,7,8};
LinkList L1; LinkList P1;
LinkList L2; LinkList P2;
LinkList L3; LinkList P3;
Node *Head1=L1.intLinkList(A1 ,6);
Node *Head12=P1.intLinkList(B1 ,6);
Node *Head2=L2.intLinkList(A2 ,6);
Node *Head22=P2.intLinkList(B2 ,6);
Node *Head3=L3.intLinkList(A3 ,6);
Node *Head32=P3.intLinkList(B3 ,6);
Interest(Head1,Head12);
cout<<"两个集合的交集是:";
L1.PrintList();
cout<<endl<<"****************************"<<endl;
Bingji(Head2,Head22);
cout<<"两个集合的并集是:";
L2.PrintList();
cout<<endl<<"****************************"<<endl;
Chaji(Head3,Head32);
cout<<"两个集合的差集是:";
L3.PrintList();
cout<<endl<<"****************************"<<endl;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |