我正在使用C++進行數據結構課程,我們應該實現一個簡單的單鏈表結構。訪問空指針來檢查C++中的鏈表是否爲空
我有所有其他的方法,但當我檢查列表是否爲空時,它實際上,程序崩潰,導致分段錯誤。
當列表是空的,我的鏈表結構應該是這樣的:
HEAD - > NULL
而如果它不是空的,它應該是這樣的:
HEAD - > ...... - > NULL
我isListEmpty()看起來像:
bool singleList::isListEmpty(void) {
return (head->next == NULL);
}
我敢肯定,當我嘗試訪問一個空指針時轉儲核心,但我不知道在哪裏。任何建議我應該看什麼?
謝謝。
- 編輯 -
對不起,我還不夠清楚。
我敢肯定頭本身是不是一個空指針,因爲在檢查,如果我的代碼工作,我喜歡的東西的工作:
list.list_insert_front(guy1);
list.list_insert_front(guy2);
list.list_remove(guy1);
list.list_remove(guy2);
list.isListEmpty(); //This line causes segmentation fault.
您是否考慮過'head'可能是NULL的可能性?無論如何,要麼學着使用調試器,要麼給我們提供[mcve]。 – YSC
你確定'head'不是'nullptr'的空列表嗎?這意味着默認的構造函數(可能構造一個空列表)創建一個「頭」。也許你打算檢查'head'是否爲空列表的'nullptr'。 –
您的插入和刪除函數調用並不能確保'head'不爲空,您可能會添加或刪除函數內部的錯誤鏈接。將你的函數改爲'head == null'來測試它。 – Confuzing