从尾到头打印链表(剑指Offer-06)

题面

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例

1输入:head = [1,3,2]
2输出:[2,3,1]

限制

10 <= 链表长度 <= 10000

思路

简单遍历链表,然后reverse一下就好。

代码

 1/**
 2 * Definition for singly-linked list.
 3 * struct ListNode {
 4 *     int val;
 5 *     ListNode *next;
 6 *     ListNode(int x) : val(x), next(NULL) {}
 7 * };
 8 */
 9class Solution {
10public:
11    vector<int> reversePrint(ListNode* head) {
12        vector<int> v;
13        ListNode *p = head;
14
15        while(p != NULL){
16            v.push_back(p->val);
17            p = p->next;
18        }
19
20        reverse(v.begin(), v.end());
21        return v;
22    }
23};