假定两个单链表是递增有序,定义并实现以下函数,完成两个单链表的合并,继续保持递增有序
int LL_merge(ListNode *La, ListNode *Lb)
#include<iostream>
using namespace std;
class node
{
public:
int data;
node* next;
node()
{
data = 0;
next = NULL;
}
};
class linklist
{
public:
node* head;
int len;
linklist()
{
len = 0;
}
void creat(int n)
{
len = n;
node* r = new node;
node* p = r;
while (n--)
{
int x;
cin >> x;
node* q=new node;
q->data = x;
p->next = q;
p = q;
}
head = r;
}
void print()
{
node* p = head->next;
while (p)
{
cout << p->data << ' ';
p = p->next;
}
cout << endl;
}
};
linklist linkmerge(node* p, node* q)
{
linklist a;
node* rr = new node;
node* r = rr;
while (p && q)
{
int pp = p->data;
int qq = q->data;
if (pp < qq)
{
r->next = p;
r = p;
p = p->next;
}
else if (pp > qq)
{
r->next = q;
r = q;
q = q->next;
}
else
{
r->next = p;
r = p;
p = p->next;
q = q->next;
}
}
if (!p)
{
while (q)
{
r->next = q;
r = q;
q = q->next;
}
}
else
{
while (p)
{
r->next = p;
r = p;
p = p->next;
}
}
a.head = rr;
return a;
}
int main()
{
int n, m;
cin >> n;
linklist a,b;
a.creat(n);
cin >> m;
b.creat(m);
node* p = a.head->next;
node* q = b.head->next;
linklist r = linkmerge(p, q);
r.print();
}