我写了以下不起作用的代码。应用程序在 print 方法上崩溃。 知道哪里出了问题吗?
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int item;
struct LinkedList *Next;
} LinkedList;
int main()
{
LinkedList vaz;
vaz.item = 14123;
vaz.Next = 0;
add(&vaz,123);
add(&vaz,9223);
Print(&vaz);
return 0;
}
void Print(LinkedList* Val)
{
if(Val != 0){
printf("%i\n",(*Val).item);
Print((*Val).Next);
}
}
void add(LinkedList *Head, int value)
{
if((*Head).Next == 0 )
{
LinkedList sab;
sab.item = value;
sab.Next = 0;
(*Head).Next = &sab;
}
else{
add((*Head).Next,value);
}
}
最佳答案
您的 add 方法应该动态分配内存,您正在使用自动分配(局部变量),当您“离开”该函数时,它会被释放。当您稍后尝试访问此内存时,这将导致未定义的行为。
void add(LinkedList *Head, int value)
{
if((*Head).Next == 0 )
{
LinkedList sab; <-- need to be allocated dynamically
sab.item = value;
sab.Next = 0;
(*Head).Next = &sab;
}
else{
add((*Head).Next,value);
}
}
关于c - C中的指针N链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762488/