/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
#include <stdio.h>
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
// write code here
if(pHead1 == NULL)//如果表1为空
{
return pHead2;
}
if(pHead2 == NULL)//表2为空
{
return pHead1;
}
struct ListNode* pHead = pHead1;//这个是合并表
if (pHead1->val <= pHead2->val)//两个链表中的第一个数据比较,也就是pHead的第一个数据
{
pHead1 = pHead1->next;
}
else {
pHead = pHead2;
pHead2 = pHead2->next;
}
struct ListNode* pCurrent = pHead;//遍历使用
while(pHead1 != NULL && pHead2 != NULL){
if(pHead1->val <= pHead2->val){//如果表1中的数据小于表2
pCurrent->next = pHead1;
pHead1 = pHead1->next;
}
else{//表1数据大于表2
pCurrent->next = pHead2;
pHead2 = pHead2->next;
}
pCurrent = pCurrent->next;//继续向后遍历
}
//最后一个元素的判断
if(pHead1){
pCurrent->next = pHead1;
}
if(pHead2){
pCurrent->next = pHead2;
}
return pHead;//返回合并表
}