剑指offer题型分类及各题的代码及解题思路
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
分析:
有二种思路,第一就是利用栈先入后出的特性完成,第二利用递归。
方法一: 利用栈先入后出的特性完成.
C++实现代码如下:
vector<int> printListFromTailToHead(ListNode* head)
{
vector<int> res;
stack<int> temp;
ListNode *p = head;
while(p != NULL) //从头到尾依次入栈
{
temp.push(p->val);
p = p->next;
}
while(!temp.empty()) //将栈中元素依次放入res中
{
res.push_back(temp.top());
temp.pop();
}
return res;
}
方法二: 从尾到头输出,递归实现。
vector<int> res;
vector<int> printListFromTailToHead(ListNode* head)
{
if(head!=NULL)
{
if(head->next!=NULL)
{
printListFromTailToHead(head->next);
}
res.push_back(head->val);
}
return res;
}