【剑指offer03逆向输出链表】 题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
先反转链表,再存入vector
注意链表->next的时候,都判断下此时是否为空,不然很容易越界
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> ans; if(!head) return ans ; if(!head->next){ans.push_back(head->val);return ans;} //将链表反置 ListNode *pre = head ; ListNode *t = pre->next; ListNode *t_next = t?t->next:nullptr; head->next = nullptr; while(t){ t->next = pre ; pre = t ; t = t_next ; t_next = t_next? t_next->next:nullptr; } ListNode *tmp = pre ; //现在指向尾 while(tmp){ ans.push_back(tmp->val); tmp = tmp->next ; } return ans ; } };