两个有序链表的合并 递归

//两个有序链表的合并 递归实现 
#include<iostream>
using namespace std;
struct NODE
{
	int data;
	NODE *next;
};
NODE *Listmerge(NODE *L1,NODE *L2)
{
	if(L1==NULL)
	return 0;
	if(L2==NULL)
	return 0;
	NODE *head=NULL;//开一个表
	if(L1->data<L2->data)//从低到高排列 
	{
		head=L1;
		head->next=Listmerge(L1->next,L2);//是head->next表的下一步 
	}
	else
	{
		head=L2;
		head->next=Listmerge(L1,L2->next);
	} 
	return head;
}
int main()
{
	NODE s1,s2,s3,s4;
	NODE n1,n2,n3,n4;
	s1.data=1;
	s1.next=&s2;
	s2.data=3;
	s2.next=&s3;
	s3.data=5;
	s3.next=&s4;
	s4.data=7;
	s4.next=NULL;
	n1.data=2;
	n1.next=&n2;
	n2.data=4;
	n2.next=&n3;
	n3.data=6;
	n3.next=&n4;
	n4.data=8;
	n4.next=NULL;
	NODE *L1=&s1;
	NODE *L2=&n1;
	NODE *head=Listmerge(L1,L2);
	while(head!=NULL)
	{
		cout<<head->data<<endl;
		head=head->next;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_40916491/article/details/85076239