输入一个链表,按链表从尾到头的顺序返回一个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;*/