从尾到头打印链表(三)
题目描述:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
代码(已在牛客上 AC)
先翻转链表, 再打印. 或者使用栈.
class Solution {
private:
ListNode* reverse(ListNode *root) {
ListNode *prev = nullptr;
while (root) {
auto tmp = root->next;
root->next = prev;
prev = root;
root = tmp;
}
return prev;
}
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> res;
head = reverse(head);
auto ptr = head;
while (ptr) {
res.push_back(ptr->val);
ptr = ptr->next;
}
return res;
}
};