#include"iostream.h"
#include"string.h"
struct Node
{
int date;
Node* next;
};
Node* create();
Node* combin(Node* head1, Node* head2);
void print(Node* head);
void main()
{
Node* phead1, *phead2,*pcon;
phead1 = create();
print(phead1);
phead2 = create();
print(phead2);
pcon = combin(phead1, phead2);
cout<<"合并后:"<<endl;
print(pcon);
}
Node* create() //
{
Node* head, *phead, *p1;
head = new Node;
head->next = NULL;
head->date = NULL;
phead = head;
int data;
cin>>data;
while(data)
{
p1 = new Node;
p1->date = data;
phead->next = p1;
phead = p1;
phead->next = NULL;
cin>>data;
}
return head;
}
Node* combin(Node* head1, Node* head2)//链表合并
{
Node*p1,*p2,*p,*head,*ptemp;
if(head1->next ->date <= head2->next ->date )
{
head = head1;
p2 = head2->next;
p1 = head1->next;
}
else
{
head = head2;
p1 = head1->next ;
p2 = head2->next ;
}
p = head;
while(p1 != NULL && p2 != NULL)
{
if(p1->date > p2->date )
{
p->next = p2;
p = p2;
p2 = p2->next ;
}
else if(p1->date < p2->date )
{
p->next = p1;
p = p1;
p1 = p1->next ;
}
else if(p1->date == p2->date )
{
p->next =p1;
p1=p1->next ;
p=p->next ;
ptemp= p2;
p2=p2->next ;
delete ptemp;
ptemp = NULL;
}
}
if(p1 == NULL)
{
p->next = p2;
}
else
{
p->next = p1;
}
return head;
}
void print(Node* head)
{
Node* ptemp = head;
while(ptemp->next != NULL)
{
ptemp = ptemp -> next ;
cout<<ptemp->date <<" ";
}
cout<<endl;
}