static void just_traverse(sll **head_ref) {
sll *first = *head_ref;
sll *second = (*head_ref)->next;
if(second == NULL) {
return;
}
just_traverse(&(second));
*head_ref = second;
printf("%d \t",second->payload);
}
在上面的代碼中,如果我刪除* head_ref = second;然而我得到的輸出相對於堆棧如果我把這一行* head_ref = second;它總是打印最後一個元素{4,3,2,1},然後總是打印1?任何人都可以解釋爲什麼?關於程序堆棧執行的鏈接列表程序流程
你到底想達到什麼目的?如果你只是遍歷爲什麼你通過**而不是sll *? sll的定義是什麼? – 2012-08-08 19:21:30
此代碼是遞歸反向鏈表的一部分list.can任何人請告訴我爲什麼「第二個」指針永遠不會改變 – 2012-08-08 19:36:47
如果您確實需要反轉而不是僅以相反的順序輸出值。我在答案中發佈了一些你需要做的改變。 – 2012-08-08 20:15:56