我在下面的代碼得到一個分段錯誤:打印鏈接列表。我究竟做錯了什麼?
void print_stack(Node * root) {
while(root != NULL) {
// print the node
root = root->next;
}
}
鑑於此作品:
int print_stack(Node ** root) {
Node * tmp = *root;
while(*root != NULL) {
// print the node
*root = (*root)->next;
}
*root = tmp;
}
的問題是什麼我做錯了嗎?對於這兩個函數,我都將節點指針的地址傳遞給列表的頭部。我試圖讓第一個函數工作,因爲它似乎更理想(沒有指針分配和永久更改根指針)..謝謝。
編輯:我已經張貼在這裏的代碼:http://dpaste.com/477724/
賽格故障的「根=根 - >下一個」行,或別的地方在你的程序? – Jollymorphic 2011-03-06 04:37:13
@Jollymorphic:我不這麼認爲..如果下一個是NULL,那麼while循環中的條件應該會導致它斷開。第二個功能確實有效。 – Sam 2011-03-06 04:42:18
如果編譯鏈接中的確切發佈代碼,那麼您肯定會得到編譯錯誤,而不是運行時錯誤(即seg故障)。 – Mahesh 2011-03-06 05:03:14