在這裏我給出了一個代碼來打印鏈接列表的反轉。遞歸函數如何在堆棧概念的鏈接列表中工作?
fun1()以相反的方式打印給定的鏈接列表。對於鏈接列表1-> 2-> 3-> 4-> 5,fun1()打印5-> 4-> 3-> 2-> 1。
void fun1(struct node* head)
{
if(head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}
任何人都可以解釋如何在每次調用fun1()時構建棧幀嗎?我期待鏈接列表的最後一個節點將被打印。但我正在以相反的順序獲取鏈接列表。它沒有使鏈表反向。它只是反向打印。我認爲這是由於像Push/Pop這樣的堆棧操作。但我不完全清楚。請在圖表中逐步操作的幫助下幫助我理解。
這個問題還不清楚。您的代碼以相反的順序打印列表的內容,它不會嘗試以相反的順序重建列表。看起來這讓你感到驚訝。你是否要求代碼實際上顛倒清單?或者解釋當前的代碼是如何工作的? – djna