这个怎么不对啊?》《

img

img


这个哪里有问题啊123456789zxcvbnmasdfghjjkl

修改如下,供参考:

struct  ListNode* mergeTwoLists(struct ListNode* L1, struct ListNode* L2)
{
    struct  ListNode* p1 = L1, * p2 = L2;
    struct  ListNode* tail = NULL, * head = NULL, * pt = NULL;
    if (L1 == NULL && L2 == NULL) { //L1 L2 都为空链表
        printf("NULL");
        return NULL;
    }
    if (L1 && L2) {  //L1 L2 都不空
        while (p1 && p2) 
        {
            if (p1->val > p2->val) {
                pt = p2;
                p2 = p2->next;
            }
            else {
                pt = p1;
                p1 = p1->next;
            }
            if (head == NULL)
                head = pt;
            else
                tail->next = pt;
            tail = pt;
        }
        tail->next = p1 ? p1 : p2;
    }
    else   //L1 L2 其中一个为空
        head = L1 ? L1 : L2;
    L1 = NULL; L2 = NULL;
    return head;
}

没有看到你的插入链表的操作。只看到了在l1和l2中跳来跳去。你可以用笔实际按照你的代码画一下,应该就清楚问题所在了