#include <iostream>
using namespace std;
//第四题
typedef struct Lnode
{
int data;
struct Lnode *next;
} lnode, *linklist;
void creatlist_h(linklist &L, int n)
{
lnode *p;
L=new lnode;
L->next=NULL;
for(int i=0; i<n; i++)
{
p=new lnode;
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
void merge_list(linklist &La, linklist &Lb, linklist &Lc)
{
lnode *pa, *pb;
Lc = La;
pa = La->next;
pb = Lb->next;
while (pa && pb)
{
if (pb->data == pa->data)
{
pa = pa->next;
La->next = pa;
}
else if (pb->data < pa->data)
{
pb = pb->next;
}
else
{
pa = pa->next;
La = La->next;
}
}
delete Lb;
}
void display(linklist L)
{
lnode *p;
p = L->next;
while (p)
{
if (p->next == NULL)
{
cout << p->data;
}
else
{
cout << p->data << " ";
}
p = p->next;
}
}
int main()
{
linklist LA, LB, LC;
int m,n;
cout << "请输入链表LA长度:";
cin >> m;
creatlist_h(LA, m);
cout << "请输入链表LB长度:";
cin >> n;
creatlist_h(LB, n);
merge_list(LA, LB, LC);
display(LC);
return 0;
}
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和集合B的差集(近由在A中出现而不再B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
最新推荐文章于 2023-03-14 16:00:58 发布