劍指offer 5 從尾到頭列印單鏈表

2021-09-30 14:42:03 字數 1275 閱讀 4591

從尾到頭列印單鏈表

ps:

如果題設不要求不能改變鍊錶結構時,可以使用單鏈表的逆置(之前已經寫過),單鏈表的逆置改變了鍊錶的方向,嚴格要求時不能這樣寫。

解1:遞迴求解

//從尾到頭列印單鏈表--遞迴實現

解2:非遞迴實現---利用棧的特性:先進的後出

listnode* printlist(listnode* phead)

listnode* p = phead;

stackq; //乙個元素型別為listnode* 的棧

//從尾到頭列印單鏈表

#include #include #include #include using namespace std;

struct listnode

};vectorprint(listnode* head)

while (!zzp.empty())

return tty;

}int main()

while (p)

cout << endl;

vectorcc = print(head);

for (int j = 0; j < cc.size(); ++j)

system("pause");

return 0;

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

解決這個問題其實有很多種思路,例如 第一種 使用遞迴配合回溯即刻實現。第二種 利用棧的特性,將鍊錶迴圈遍歷放入棧中,棧頂是鍊錶的尾結點,然後出棧依次列印就可從尾到頭列印鍊錶。第四種 把鍊錶中連線結點的指標反轉過來,改變鍊錶的方向,再從頭都尾列印即可。解決方法很多種,我們在這裡給出第一二種的具體實現步...

劍指offer 從尾到頭列印列表

1.方法一 看到這道題的時候,我的最初想法是鍊錶翻轉,在輸出。在原書中作者認為這不是最好的解決辦法,因為這樣會改變鍊錶的原來的結構,如果在面試中遇到類似的問題,應該主動詢問面試官這樣的方發是否可行。1.方法二 鍊錶的逆序列印,首先肯定要遍歷鍊錶,可是輸出的順序卻是從尾到頭。也就是說,第乙個遍歷到的節...

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

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