Я хочу объединить два односвязных списка, таких как La и Lb, в новый список, такой как Lc, а головной узел lc указывает на La. Есть код:
//something unnecessary code has been cut
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//merge La and Lb into Lc
Status Algo(LinkList La, LinkList *Lb, LinkList *Lc);
int main()
{
LinkList La,Lb,Lc;
CreateListHead_L(&La, 5); //Crate a list with 5 nodes
CreateListHead_L(&Lb, 5);
printf("La:"); ListTraverse_L(La);
printf("Lb:"); ListTraverse_L(Lb);
Algo(La, &Lb, &Lc);
printf("Lc:");
ListTraverse_L(Lc);
return 0;
}
Status Algo(LinkList La, LinkList *Lb, LinkList *Lc)
{
LinkList p;
*Lc = La;
p = La->next;
if(!p) return ERROR;
while(p)
p = p->next;
p->next = (*Lb)->next;
free(*Lb);
return OK;
}
Я просто хочу знать, что не так с функцией Algo
, которую я считаю правильным. Почему программа зависала при обработке функции?