我刚刚开始使用C,我认为整个指针/ malloc/free让我很生气。我试图定义一个简单的线性递归数据结构,并通过它循环,打印出我所穿过的每个元素。 (代码如下)。循环遍历递归列表C
但是,我得到段错误:一旦11,我尝试移动到下一个元素,以“插入”一个新的元素
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct number_list {
int num;
struct number_list *next_num;
} numlist;
int main() {
numlist *cur, *pointer;
numlist *NewList=NULL;
cur = NewList;
cur = malloc(sizeof(numlist));
cur->num=5; // this operation is never reached too
cur = cur->next_num // Must I malloc?
printf("Reached."); // Is never reached.
cur->num=9;
pointer=NewList;
while (pointer!=NULL) {
printf("%d", pointer->num);
pointer=pointer->next_num;
}
return 0;
}
而且,我有另一个更大的程序while-循环,其功能完全像这样的while循环,除了在“填充”递归结构之外。因此,我实际上并不需要创建任何新元素,只需通过并打印每个元素即可。但是,在循环打印最后一个元素的那一刻,它又崩溃了Segmentation Fault:11。我猜这可能是因为我试图做pointer = pointer->next_num
。那么我如何正确地在C上正确运行这样的数据结构呢?
是的谢谢你的解释,绝对清除了很多东西了! – mercurial 2013-05-06 12:45:20