#include<iostream>
using namespace std;
struct node
{
int element;
node *next;
};
node *create_list(int n)
{
if(n <= 0)
{
return NULL;
}
node *head = NULL;
node *p = new node;
if(p == NULL)
{
return NULL;
}
head = p;
while(--n)
{
node *q = new node;
if(q == NULL)
{
return NULL;
}
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
node *merg(node *head1, node* head2, node* &head)
{
head = NULL;
if(head1 == NULL && head2 == NULL)
return NULL;
node *p1 = head1;
node *p2 = head2;
node *t = NULL;
if(head1->element < head2->element)
{
head = t = head1;
p1 = p1->next;
}
else
{
head = t = head2;
p2 = p2->next;
}
while(p1 != NULL && p2 != NULL)
{
if(p1->element <= p2->element)
{
t->next = p1;
t = p1;
p1 = p1->next;
}
else
{
t->next = p2;
t = p2;
p2 = p2->next;
}
}
t->next = p1 ? p1 : p2;
return head;
}
int main()
{
node *head1 = create_list(3);
node *head2 = create_list(5);
node *p1 = head1;
node *p2 = head2;
for(int i = 0; i < 3; i++)
{
p1->element = i + 3;
cout<<p1->element<<' ';
p1 = p1->next;
}
cout<<endl;
for(int j = 0; j < 5; j++)
{
p2->element = j + 2;
cout<<p2->element<<' ';
p2 = p2->next;
}
cout<<endl;
node *head = NULL;
head = merg(head1, head2, head);
while(head != NULL)
{
cout<<head->element<<' ';
head = head->next;
}
return 0;
}
数据结构与算法之—链表(二) 有序单链表合并
最新推荐文章于 2021-01-15 18:40:01 发布