面試題5 從尾到頭列印鍊錶

2022-07-27 11:51:13 字數 923 閱讀 8333

【題目描述】

輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。

【解決方案】

1. 最普通的方法,先反轉鍊錶,再輸出。但是,由於反轉會改變鍊錶結構,不推薦;

2. 典型的「後進先出」,聯想到棧,可以輸出到棧中,再以此讀取;

3. 棧可以用遞迴實現,故可以用遞迴實現。如果資料量大,可能導致方法呼叫棧溢位,所以,最好還是顯示地用遞迴實現。

我的**實現1,僅供參考:

1

///2

///反轉鍊錶後輸出

3///

4public

static

void

printlinkedlistvaluereverse(listnode head)520

21//

輸出反序鍊錶

22while (headreverse != null)23

27 }

我的**實現2,僅供參考:

1

///2

///利用棧輸出

3///

4public

static

void

printlinkedlistvaluereverse(listnode head)517

18//

出棧19

while (stack.count != 0)20

23 }

我的**實現3,僅供參考:

1

///2

///利用遞迴輸出

3///

4public

static

void

printlinkedlistvaluereverse(listnode head)

511 }

面試題5 從尾到頭列印鍊錶

方法一 使用棧 html view plain copy include stack include stdio.h typedef struct listnode listnode listnode createlistnode int value void connectlistnode lis...

面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個節點的值。鍊錶定義結構如下 struct listnode 通常遍歷的順序是從頭到尾的順序,可輸出的順序確是從尾到頭。也就是說第乙個遍歷到的節點最後乙個輸出,而最後乙個遍歷到的節點第乙個輸出。這就是典型的 後進先出 我們可以用棧實現這種順序。每經過...

面試題5 從尾到頭列印鍊錶

鍊錶的建立,插入結點,刪除結點等操作都只需要20行左右的 來實現。鍊錶是一種動態資料結構,因為在建立鍊錶的時候,無須知道鍊錶的長度。當插入乙個結點的時候,只需要為新結點分配記憶體,然後調整指標的指向來確保新結點被鏈結到鍊錶當中。記憶體分配不是在建立鍊錶的時候一次完成的,而是每新增乙個結點分配一次記憶...