struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) 
{
    struct ListNode* vhead = (struct ListNode*)malloc(sizeof(struct ListNode)); //新建一个头结点
    vhead->val = -1;
    struct ListNode *p = vhead;   //用一个指针指向该头结点
        while (pHead1 && pHead2)    //两个链表都未比较完
       {
            if (pHead1->val <= pHead2->val) //表1的值更小
           {
                p->next = pHead1;    //先将结点连接到新表,再让原表指针后移一位,二者顺序不可换
                pHead1 = pHead1->next;
            }
            else {
                p->next = pHead2;
                pHead2 = pHead2->next;
            }
            p = p->next;  //加入一个新结点后,新表指针也后移一位
        }
        p->next = pHead1 ? pHead1 : pHead2;  //都比较完后,哪个表非空则直接加入到新表中
        return vhead->next;  //返回第一个结点
    }