《剑指offer》c++版本 6.从尾到头打印链表
生活随笔
收集整理的這篇文章主要介紹了
《剑指offer》c++版本 6.从尾到头打印链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如題:
題目描述 輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。剛到手,想到的是反轉鏈表,然后順序打印。不過這樣會改變原有鏈表。不過這道題最好的解法是利用遞歸或者棧,一樣的道理。遍歷鏈表,從尾到頭,聽起來和棧的元素訪問順序一致。因此,可以遍歷鏈表,元素入棧,然后再出棧訪問即可。此為方法1.
方法2是使用遞歸,先訪問下一個元素,再訪問自身。值得注意的是,凡是遞歸寫法,一般都可以改成棧寫法。
下面是c++的棧解法:
//解法,遍歷鏈表,將元素保存到棧中,然后將棧中每個元素放到vector中 class Solution { public:vector<int> printListFromTailToHead(ListNode* head) {stack<int> st;vector<int> vec;ListNode *curNode = head;//特殊情況處理if (head == NULL)return vec;//遍歷head,入棧while(curNode){st.push(curNode->val);curNode = curNode->next;}//出棧while (!st.empty()){vec.push_back(st.top());st.pop();}return vec;} };=============================================================================================
Linux應用程序、內核、驅動、后臺開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。
總結
以上是生活随笔為你收集整理的《剑指offer》c++版本 6.从尾到头打印链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《剑指offer》c++版本 5.替换空
- 下一篇: 南北战争中革命战争阶段介绍