从尾到头打印链表
描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1]
0 <= 链表长度 <= 10000
示例1
输入:
{1,2,3}
复制
返回值:
[3,2,1]
复制
示例2
输入:
{67,0,24,58}
复制
返回值:
[58,24,0,67]
//方法一:
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> ret;
ret.clear();
stack<int> st;
if(head==nullptr){
return ret;
}
while(head!=nullptr){
st.push(head->val);
head=head->next;
}
while(!st.empty()){
ret.push_back(st.top());
st.pop();
}
return ret;
}
};
方法二:
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> ret;
ret.clear();
if(head==nullptr){
return ret;
}
while(head!=nullptr){
ret.push_back(head->val);
head=head->next;
}
reverse(ret.begin(),ret.end());
return ret;
}
};