劍指offer:從頭到尾列印連結串列
阿新 • • 發佈:2018-11-28
題目描述
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。
思路:
先反轉連結串列,再順序遍歷.
方法1: 指標法:順序遍歷,把元素順序放到頭部
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; ListNode* pre = NULL; while(head) { ListNode* next = head->next; head->next = pre; pre = head; head = next; } while(pre) { res.push_back(pre->val); pre = pre->next; } return res; } };
方法2: 堆疊法
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector <int> result; stack<int> arr; ListNode* p=head; while(p!=NULL) { arr.push(p->val); p=p->next; } int len=arr.size(); for(int i=0;i<len;i++) { result.push_back(arr.top()); arr.pop(); } return result; } };