題目:輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個節點的值.
分析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...