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

2021-07-22 19:28:35 字數 946 閱讀 7830

題目:輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個節點的值.

分析1:

通常,列印是乙個唯讀操作,我們不希望列印的同時去修改原資料的內容.故我們不能改變鍊錶的結構.解決這個問題肯定是需要遍歷鍊錶的,但是遍歷的順序是從頭到尾的,可輸出的順序確實從尾到頭,也就是說第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷到的節點第乙個輸出. 這是典型的」先進後出「,我們可以利用棧來實現這種順序;

**1:

/*

*鍊錶的資料結構

*/class listnoede}/*

*具體實現類

*/public

class solution

arraylistarraylist=new arraylist();

//注意此處遍歷棧的方法

while(!stack.isempty())

return arraylist;

}}/*

*測試**

*/public

class carry

}}

輸出結果:5 4 3 2 1

分析2:

根據分析1中的棧結構,可以聯想到,遞迴在本質上就是乙個棧結構,於是也可以用遞迴來實現; 我們每訪問到乙個節點的時候,首先輸出它後面的節點,再輸出其本身的節點,這樣鍊錶的結構就反過來輸出了.

**2

class solution

list

.add(pnode.value);

}

return

list;

}}

從尾到頭列印單鏈表(劍指offer面試題5)

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。分析 此題考察單鏈表的理解和應用,為了實現列印,必須先建立乙個單鏈表,頭結點可有可無,但有頭結點和無頭結點在程式設計上是應該注意的,反向列印思路不一樣,這裡以包含頭結點舉例分析,單鏈表以尾部插入方式建立,頭結點資料域為空,頭結點指標指向下...

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

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。public void invertedlist1 listnode head listnode p head stack integer stack new stack integer while p null while stack ...

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

題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。考慮用棧實現,如下 從尾到頭輸出鍊錶 棧,後進先出 include include include include includeusing namespace std struct listnode 尾部插入法插入節點 void add2tai...