我想在c中構建一個健壯的LinkedList,我正在處理的問題之一是初始化。取消引用空指針的指針?
struct node* list = malloc(sizeof(node))
是初始化LLIST一個明顯的方式,但它初始化head
元素的value
爲0,這不正是我想要的。新初始化的LList不應該有任何節點。相反,我想要做這樣的事情:
struct node* list = NULL;
創建LLIST,然後用添加元素:
add(&list, 1);
add(&list, 2);
,將基本上取消引用&list
,測試,看看它是否是NULL
,如果是這樣做X否則做Y.但是,顯然我是seg錯誤,並且想知道是否因爲我解引用指向空指針的指針?
的add()
8 void add(struct node** headRef, int value) {
9 struct node* node = *headRef;
10 struct node* new_node = malloc(sizeof(*new_node));
11
12 new_node->value = value;
13 new_node->next = NULL;
14
15 if (node == NULL) {
16 node = malloc(sizeof(node));
17 node = new_node;
18 } else {
19
20 while (node->next != NULL) {
21 node = node->next;
22 }
23
24 node->next = new_node;
25 }
26 }
感謝
我們怎麼可能告訴你是否沒有顯示seg故障發生的代碼?如果你解除引用'&list',你將得到'list'。這很好。你不能做的是取消引用'list'。 – kaylum
那麼,你可能知道,如果解引用指向空指針的指針會導致seg錯誤。 **編輯:感謝編輯艾倫,這是我所問...是否可以解引用指針空指針。** –
我可以發佈代碼,更新等待... –