题目:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
题解思路:
方法一:satck+vector+双遍历
遍历链表,将链表的元素的值放入栈中,再将栈中的元素放入数组中。
注意:这里stack存的是链表元素的值。 stack< int >s;
函数代码:
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int>res;
if(!head)
{
return res;
//这样也可以 return vector<int>(0);
}
ListNode *p=head;
stack<int>s;
while(p)
{
int x=p->val;
s.push(x);
p=p->next;
}
while(!s.empty())
{
res.push_back(s.top());
s.pop();
}
return res;
}
};
方法二:栈+数组
遍历链表,将链表元素放入栈中,栈存放的是链表;再遍历链表,通过栈把值输出到数组中。
注意:这个stack存的链表元素。*stack<ListNode >s;
函数代码二:
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int>res;
if(!head)
{
return res;
//return vector<int>(0);
}
ListNode *p=head;
stack<ListNode *>s;
while(p)
{
s.push(p);
p=p->next;
}
while(!s.empty())
{
res.push_back(s.top()->val);
s.pop();
}
return res;
}
};