为什么我的链表在mergelist的循环体中会不断循环?这是什么原因?
#include <iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
} LNode;
void createlistR(LNode *&L, LNode *&P)
{
int i;
LNode *s, *t;
P, L = (LNode *)malloc(sizeof(LNode));
L->next, 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 < 10; i++)
{
t = (LNode *)malloc(sizeof(LNode));
t->data = 3 * i + 1;
s->next = t;
s = t;
}
s->next = NULL;
}
void createlistF(LNode *&L)
{
int i;
LNode *s, *t;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
s = L;
for (i = 0; i < 10; i++)
{
t = (LNode *)malloc(sizeof(LNode));
t->data = 3 * i + 1;
t->next = s->next;
s->next = t;
}
}
int traveselist(LNode *L)
{
if (L->next == NULL)
{
return false;
}
while (L->next != NULL)
{
cout << L->next->data << " " << endl;
L = L->next;
}
cout << "完成" << endl;
return true;
}
void mergelist(LNode *A, LNode *B, LNode *&C)
{
LNode *S, *L, *P;
C = (LNode *)malloc(sizeof(LNode));
C->next = NULL;
S = C;
L = A;
P = B;
while (L->next != NULL && P->next != NULL)
{
cout << "L->next->data:" << L->next->data << endl;
cout << "p->next->data: " << P->next->data << endl;
if (L->next->data <= P->next->data)
{
cout << "1" << endl;
cout << "L->next->data:" << L->next->data << endl;
cout << "p->next->data: " << P->next->data << endl;
S->next = L->next;
S = S->next;
L = L->next;
cout << "S->data:" << S->data << endl;
cout << "L->next->data:" << L->next->data << endl;
cout << "p->next->data: " << P->next->data << endl;
}
else
{
S->next = P->next;
S = S->next;
P = P->next;
}
}
if (L->next != NULL)
{
S->next = L->next;
}
if (P->next != NULL)
{
S->next = P->next;
}
}
int main()
{
LNode *L, *P, *C;
createlistR(L, P);
traveselist(L);
createlistF(L);
traveselist(L);
traveselist(P);
createlistR(L, P);
traveselist(L);
traveselist(P);
mergelist(L, P, C);
traveselist(C);
}