/**
 * 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;//返回合并表

    }