#include<iostream>
using namespace std;
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*LinkList;
void CreateList(LinkList &L,int m)
{
lnode *p,*r;
L=new lnode;
L->next=NULL;
r=L;
for(int i=0;i<m;i++)
{
p=new lnode;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
}
void MegerList(LinkList &LA,LinkList &LB,LinkList &LC)
{
lnode *pa,*pb,*pc;
pa=LA->next;
pb=LB->next;
pc=LC=LA;
while(pa&&pb)
{
if(pa->data==pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
pb=pb->next;
}
else if(pa->data>pb->data)
{
pb=pb->next;
}
else
{
pa=pa->next;
}
}
pc->next=NULL;
LA=LC;
delete LB;
}
void display(LinkList &L)
{
lnode *p;
p=new lnode;
p=L->next;
while(p)
{
cout<<p->data;
p=p->next;
}
}
int main()
{
LinkList LA,LB,LC;
int m,n;
cout<<"请输入链表LA的长度:";
cin>>m;
cout<<"请递增输入链表LA的元素:";
CreateList(LA,m);
cout<<"请输入链表LB的长度:";
cin>>n;
cout<<"请递增输入链表LB的元素:";
CreateList(LB,n);
MegerList(LA,LB,LC);
cout<<"链表LA和链表LB的交集为:";
display(LC);
return 0;
}
已知链表A和B分别表示两个集合,其元素递增排列。请设计一个算法,用于求出A与B的交集,并存放于A链表中。
最新推荐文章于 2024-07-25 12:55:52 发布