方法1,暴力法,先从头到尾遍历链表,将链表元素保存到数组中,然后再反向遍历数组:

    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. */
    9. class Solution {
    10. public:
    11. vector<int> reversePrint(ListNode* head) {
    12. vector<int> a1,a2;
    13. for (ListNode *i = head;i!=nullptr;i=i->next) {
    14. a1.push_back(i->val);
    15. }
    16. for (int i=a1.size()-1;i>=0;i--) {
    17. a2.push_back(a1[i]);
    18. }
    19. return a2;
    20. }
    21. };

    这种方法效率不高,在leedcode通过:

    1. 执行用时:4 ms, 在所有 C++ 提交中击败了75.94% 的用户
    2. 内存消耗:8.6 MB, 在所有 C++ 提交中击败了38.98% 的用户

    方法2,遍历链表,将数据放入栈中,然后返回