输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
方法1:利用栈先进后出放入特点,先整体入栈,然后出栈一个打印一个
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
stack<ListNode*> Tstack;
vector<int> vec;
ListNode* pnode=head;
while(pnode!=NULL)
{
Tstack.push(pnode);
pnode=pnode->next;
}
while(!Tstack.empty())
{
pnode=Tstack.top();
vec.push_back(pnode->val);
Tstack.pop();
}
return vec;
}
};
方法2:递归,递归的过程就是入栈出栈的过程
void PrintList(ListNode* pHead)
{
if(pHead!=NULL){
if(pHead->next!=NULL){
PrintList(pHead->next);
}
printf("%d\n",pHead->val);
}
}
注意:pHead->next!=NULL 这一步可要可不要,作用是少一层递归