使用C++ stl的反迭代器
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
vector<int> printListReversingly(ListNode* head) {
vector<int> res;
while (head) {
res.push_back(head->val);
head = head->next;
}
return vector<int>(res.rbegin(), res.rend());
}
};
使用递归实现
class Solution{
public:
vector<int>printListReversingly(ListNode* head){
vector<int>res;
if(!head){
return res;
}
else{
res = printListReversingly(head->next);
/*
一开始写的时候自己写成printListReversingly(head->next);发现这样只会输出最后一个元素,
别的都不输出,赋值给res是为了更新res,因为每一个递归函数的res是互相独立的前一个进行
的res操作不会在后一个res中出现改动留下痕迹,所以我们要在后一个函数还没有结束前先把
前一个函数对res的改动保存给它,用于更新。
*/
res.push_back(head->value);
}
}
}