剑指offer 编程题(3):链表倒序输出到vector

来源:互联网 发布:爱因斯坦名言知乎 编辑:程序博客网 时间:2024/05/17 03:56

题目描述
输入一个链表,从尾到头打印链表每个节点的值。

方法一:借助stack栈,先进后出,先入栈,再一个一个取栈的top放到vector

v.push_back(s.top());s.pop();
/***  struct ListNode {*        int val;*        struct ListNode *next;*        ListNode(int x) :*              val(x), next(NULL) {*        }*  };*/class Solution {public:    vector<int> printListFromTailToHead(ListNode* head)    {        ListNode* p = head;        vector<int> v;        stack<int> s;        while(p != nullptr)        {            s.push(p->val);            p = p->next;        }        while(!s.empty())        {            v.push_back(s.top());            s.pop();        }        return v;    }};

方法二:利用vector的反转函数

reverse(v.begin(),v.end());
class Solution {public:    vector<int> printListFromTailToHead(ListNode* head)    {        ListNode* p = head;        vector<int> v;        while(p != nullptr)        {            v.push_back(p->val);            p = p->next;        }        reverse(v.begin(),v.end());        return v;    }};
原创粉丝点击