合并两个有序链表

来源:互联网 发布:ug攻丝编程 编辑:程序博客网 时间:2024/06/06 00:54

给出以下两个链表:


要求:将两个合并为一个有序链表(合并完如上图所示)

需要考虑的问题总结:

合并之前我们需要考虑是否存在空链表(分三种情况)

新链表的头(是哪个节点)

合并中如果有一个已经为空(如下)



代码如下:

Node* List::MergeList(Node* Head1,Node* Head2){if(Head1==NULL&&Head2==NULL)//两个链表均为空return NULL;if(Head1==NULL&&Head2!=NULL)//L1为空L2不为空return Head2;if(Head2==NULL&&Head1!=NULL)//L2为空L1不为空return Head1;Node* newHead=NULL;Node* cur1=Head1;Node* cur2=Head2;Node* prev=NULL;if(Head1->_data <Head2->_data)//判断哪个作为新的头结点{newHead=Head1;cur1=cur1->_next ;}else{newHead=Head2;cur2=cur2->_next ;}prev=newHead;while(cur1&&cur2){if(cur1->_data <cur2->_data ){prev->_next=cur1;cur1=cur1->_next;prev=prev->_next ;}else{prev->_next=cur2;cur2=cur2->_next;prev=prev->_next ;}}if(cur1==NULL&&cur2!=NULL)//如果L1已经为空prev->_next =cur2;if(cur1!=NULL&&cur2==NULL)//如果L2已经为空prev->_next =cur2;return newHead; }


运行结果:




原创粉丝点击