我想使用双指针创建一个列表并使用 void 作为返回。
#include<stdio.h>
#include<stdlib.h>
typedef struct list{
int value;
struct list *next;
}*list;
void addnode(struct list **List, int number) {
if(*List == NULL) {
*List = (struct list*)malloc(sizeof(struct list*));
(*List)->value = number;
(*List)->next = NULL;
} else {
while((*List)->next != NULL) {
(*List) = (*List)->next;
}
*List = (struct list*)malloc(sizeof(struct list*));
(*List)->value = number;
(*List)->next = NULL;
}
}
int main() {
list List1 = NULL;
addnode(&List1, 20);
printf("%d \n", List1->value);
addnode(&List1, 30);
printf("%d \n", List1->value);
printf("%d \n", List1->next->value);
return 0;
}
addnode 中的第一个 if 总是被执行,但我想附加列表(如果它不为空),但它似乎永远不会工作。我还会遇到段错误,因为在最后一个 printf 中,它尝试获取列表中的下一个元素,但它从未像我想要的那样初始化。
如果一切按我想要的方式工作,我应该打印出来
printf("%d\n", List1->value)
20
printf("%d\n", List1->value)
20
printf("%d\n", List1->next->value)
30
最佳答案
您传递给 malloc
的大小是错误的。
您正在分配一个结构列表
,而不是结构列表*
。
关于c - 双点列表 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209074/