我遇到了一个问题,我的链表没有添加我给它的新值。这导致了分段错误,但我不知道如何修复它
当前代码
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("%dt",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);
}
更新
我添加了主要内容,但现在没有打印任何分割错误。。。
add(&first, number)
故障发生在加法函数中,更具体地说;新节点->next=*列表">
我尝试了取消引用和许多其他事情,但都无济于事
对取消引用的列表进行更改
(*list) = new_node;
以便将new_node值添加到列表中。
由于未更新头指针,因此未插入节点:在add()
函数末尾添加此语句:
*list = new_node;