我遇到了一個問題,我的鏈表沒有添加我給它的新值。它導致分段錯誤,但我不知道如何修復它
當前代碼
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;”
我嘗試取消參考和許多其他事情,但無濟于事。
uj5u.com熱心網友回復:
節點沒有插入是因為你沒有更新頭指標:在add()函式末尾添加這個陳述句:
*list = new_node;
uj5u.com熱心網友回復:
對取消參考的串列進行更改
(*list) = new_node;
為了將 new_node 值添加到串列中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368766.html
