我刚刚写了一个简单的链表,但是当通过列表迭代时add()
,display()
程序段错误。
#include <stdlib.h>
#include <stdio.h>
typedef struct entry {
void *value;
struct entry *next;
} entry;
typedef struct list {
entry *items;
} list;
list *create(void) {
list *l;
l = malloc (sizeof(list));
l->items = malloc(sizeof(entry*));
l->items->next = NULL;
return l;
}
void add(list *l, void *value) {
entry *temp, *last, *new;
for (temp = l->items; temp != NULL; temp = temp->next) {
last = temp;
}
new = malloc(sizeof(*new));
new->value = value;
new->next = NULL;
last->next = new;
}
void display(list *l) {
entry *temp;
for (temp = l->items; temp != NULL; temp = temp->next) {
printf("%s\n", temp->value);
}
}
int main(void) {
list *l = create();
add(l, "item1");
add(l, "item2");
add(l, "item3");
add(l, "item4");
display(l);
return 0;
}
我已经在几台机器上测试了代码,它在一些机器上工作,在其他机器上不起作用。我对错误的来源一无所知。