劍指offer-從尾到頭列印連結串列(連結串列)
阿新 • • 發佈:2018-12-13
題目描述
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。
連結串列中當前節點q的next指標本來指向的是後一個節點,現在要令他指向前一個節點p(在此之前用r存下q的後一個節點)。
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; if(head==NULL) return res; if(head->next==NULL) { res.push_back(head->val); return res; } ListNode* p=head; ListNode* q=head->next; ListNode* r; head->next=NULL; //原來的頭指標反轉後成為尾指標,應當指向NULL while(q) { r=q->next; //r儲存當前節點現在的next,也就是r指向q的下一個節點 q->next=p; //當前q節點的next指向前一個節點p。 p=q; //節點後移一個 q=r; } head=p; while(p) { res.push_back(p->val); p=p->next; } return res; } };