题目:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

题解思路:
方法一: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;
}
};

本文介绍了一种链表逆序打印的方法,通过使用栈结构,先遍历链表将节点值压入栈中,再依次弹出并存入数组,实现从尾到头的链表值返回。提供了两种实现方式,一种是将链表节点值存入栈,另一种是直接将链表节点存入栈。
790

被折叠的 条评论
为什么被折叠?



