输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
分析1:从尾到头,想到堆栈。

class Solution {
vector <int>  result;          
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        //堆栈
            stack<int> s1;
            ListNode* p=head;
            while(p!=NULL)
             {
               s1.push(p->val);//依次把链表节点的值插入到堆栈中
               p=p->next;
             }
             int len=s1.size();
            for(int i=0;i<len;i++)
             {
                result.push_back(s1.top());  //返回到arrayList
                s1.pop();
              }
   }
};

分析2:利用递归

        vector<int> value;//最好定义在外面
        ListNode *p=NULL;
        p=head;
        if(p!=NULL){
            if(p->next!=NULL){
                printListFromTailToHead(p->next);
            }
            value.push_back(p->val);
        }
        return value;*/