头插法合并链表为递减数列出错

好像缺失了两个链表各自最后一个数,结果还有莫名的数,怎么改?

void createlistR(LNode *&L, LNode *&P)
{
    int i;
    LNode *s, *t;
    P = (LNode *)malloc(sizeof(LNode));
    L = (LNode *)malloc(sizeof(LNode));
    L->next = NULL;
    P->next = NULL;
    s = L;
    for (i = 0; i < 10; i++)
    {
        t = (LNode *)malloc(sizeof(LNode));
        t->data = 2 * i + 1;
        s->next = t;
        s = t;
    }
    s->next = NULL;
    s = P;
    for (i = 0; i < 5; i++)
    {
        t = (LNode *)malloc(sizeof(LNode));
        t->data = 2 * i + 2;
        s->next = t;
        s = t;
    }
    s->next = NULL;
}
void mergelistF(LNode *A, LNode *B, LNode *&C) //头插法合并为递减链表
{
    cout << "遍历数组A" << endl;
    traveselist(A);
    cout << "遍历数组B" << endl;
    traveselist(B);
    LNode *a1, *a2, *b1, *b2, *c;
    C = (LNode *)malloc(sizeof(LNode));
    C->next = NULL;
    a1 = A;
    a2 = A->next;
    b1 = B;
    b2 = B->next;
    c = C;
    while (a1->next != NULL && b1->next != NULL)
    {
        if (a1->next->data <= b1->next->data)
        {
            a1->next = c->next;
            c->next = a1;
            a1 = a2;
            a2 = a2->next;
        }
        else
        {
            b1->next = c->next;
            c->next = b1;
            b1 = b2;
            b2 = b2->next;
        }
    }
    while (a1->next != NULL)
    {
        a1->next = c->next;
        c->next = a1;
        a1 = a2;
        a2 = a2->next;
    }

    while (b1->next != NULL)
    {
        b1->next = c->next;
        c->next = b1;
        b1 = b2;
        b2 = b2->next;
    }
}

img

部分运行结果:
完成5
遍历数组A
1
3
5
7
9
11
13
15
17
19
完成
遍历数组B
2
4
6
8
10
完成
合并完成后
17
15
13
11
9
8
7
6
5
4
3
2
1
-1163005939
-1163005939
完成

P = (LNode *)malloc(sizeof(LNode));
L = (LNode *)malloc(sizeof(LNode));

最开始这儿的地址对应的P->data和L->data是不是没有赋值,所以最开始输出的时候有两个未定义的值,你的显示函数我没看到