从尾到头打印链表

题目描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
1.使用栈:
将原先的链表压入栈,然后从栈返回给value容器.
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
       vector<int> value;
       stack<int> sta;
        while(head!=NULL){
            sta.push(head->val);
            head=head->next;
        }
        while(!sta.empty()){
            value.push_back(sta.top());
            sta.pop();
        }
        return value;
    }
};

 

2.使用递归

递归(归的时候),返回数值给value,然后进入容器。

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> value;
        if(head!=NULL){
            if(head->next!=NULL){
                value=printListFromTailToHead(head->next);
            }
             value.push_back(head->val);
        }
        return value;
    }
};

 

3.反向迭代器(       rbegin() 和rend()      )

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> value;
        while(head!=NULL){
            value.push_back(head->val);
            head=head->next;
        }
        
        return vector<int>(value.rbegin(),value.rend());
    }
};

c.begin() 返回一个迭代器,它指向容器c的第一个元素

c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置

c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素

c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-04-18 20:45  菜鸟创业梦  阅读(109)  评论(0编辑  收藏  举报