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