题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)
解题思路
首先想到的是更改链表的指针指向,将其全部倒转过来,但是这样改变了链表结构,能不能在不改变链表的情况下实现呢,想到了采用栈先进后出的特点,从前往后将结点地址压入栈再依次将地址弹出即可实现,如下是代码
class Solution
{
public:
vector<int> reversePrint(ListNode* head)
{
stack<ListNode*> a;
vector<int> returnV;
ListNode* imp = head;
while (nullptr != imp)
{
a.push(imp);
imp = imp->next;
}
while (!a.empty())
{
imp = a.top();
returnV.push_back(imp->val);
a.pop();
}
return returnV;
}
};