数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交 5

数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示ab的交,且c中的元素也递增有序。分别以顺序表和单链式表为存储结构,编写... 数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交,且c中的元素也递增有序。分别以顺序表和单链式表为存储结构,编写程序 展开
shiguangmeir
2011-10-31 · 超过35用户采纳过TA的回答
知道答主
回答量:107
采纳率:60%
帮助的人:36.8万
展开全部
#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;

}
li410211
2011-10-31
知道答主
回答量:14
采纳率:0%
帮助的人:10.1万
展开全部
勤快点吧,用归并算法。。。不是很难,不会了再回我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
机智小溪流77
2011-10-30 · 超过16用户采纳过TA的回答
知道答主
回答量:168
采纳率:0%
帮助的人:49.7万
展开全部
sd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式