【发布时间】:2023-04-03 07:47:01
【问题描述】:
我遇到了一个问题,我的链表没有添加我给它的新值。它导致了分段错误,但我不知道如何修复它
当前代码
typedef struct node {
int value;/*data stored in the node */
struct node *next;
/*pointer to the next node*/
} NODE;
void add(NODE **list, int n){//add_to_list in slides
NODE *new_node;
new_node = malloc(sizeof(NODE));
if (new_node == NULL) {
fprintf(stderr,"Error:malloc failed in add_to_front \n");
exit(EXIT_FAILURE);
}
new_node->value = n;
new_node->next = *list;
//return new_node;
}
void print_list(NODE *list){
printf("\n=========\n");
for (;list;list=list->next){
printf("%d\t",list->value);
}
printf("\n=========\n");
}
int main()
{
NODE *first=NULL;
print_list(first);
add(&first,10);
add(&first,30);
add(&first,20);
add(&first,40);
add(&first,30);
print_list(first);
}
更新
我在 main 中添加,但现在没有打印分段错误...
add(&first, number)
错误发生在 add 函数中,更具体地说是这一行“new_node->next = *list;”
我尝试了取消引用和许多其他操作,但无济于事。
【问题讨论】:
-
如果您的程序,您将
NODE *first=NULL;作为第一行。所以first是一个空列表。您预计这种情况何时会改变?指出代码中将某些内容分配给first或以其他方式更改它的行。 -
所以 add 函数是用来添加列表的(第一个)
-
添加函数中的哪一行?
-
它在 main add(&first,10) 是它添加的第一件事
-
ohhhhh...我刚刚明白了
标签: arrays c pointers struct linked-list