struct item {
char name[32];
struct item *next;
};
struct item *create_item(char *name) {
struct item *result = malloc(sizeof(struct item));
strcpy(result->name, name);
result->next = NULL;
return result;
}
int equals(char *a, char *b) {
return strcmp(a, b) == 0;
}
void append(struct item **list, struct item *i){
i = malloc(sizeof(struct item));
struct item *last = *list;
strcpy(i->name, i->name);
i->next = NULL;
if(*list == NULL){
*list = i;
}
while(last->next != NULL) {
last = last->next;
}
last->next = i;
}
int main(void) {
struct item *list = NULL;
append(&list, create_item("Dog"));
append(&list, create_item("Cat"));
append(&list, create_item("Bat"));
assert(equals(list->next->next->name, "Bat"));
}
我想在列表的末尾追加一个新的struct节点,但是当我尝试运行main时,我得到了一个错误(分段错误)。
有人能帮我吗?:-)
我想问题可能是我在main中用NULL初始化了列表,但是我不知道我需要做什么修改,以便append-function可以处理它。
1条答案
按热度按时间beq87vna1#
您有几个错误:
您可以在此处
malloc
一个已错位的对象:而主要的问题是,你从来没有在
append
函数中连接头部(list
)。您的代码正在运行:
请下次提供可编译的代码段。