从尾到头打印链表
题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例
输入:head = [1,3,2]
输出:[2,3,1]
具体代码
1.利用栈
代码如下(示例):
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> res;
stack<int> sta;
ListNode* cur = head;
while (cur != NULL){
sta.push(cur -> val);
cur = cur -> next;
}
while (!sta.empty()){
res.push_back(sta.top());
sta.pop();
}
return res;
}
};
2.利用reverse函数
代码如下(示例):
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> res;
while (head != NULL){
res.push_back(head -> val);
head = head -> next;
}
reverse(res.begin(), res.end());
return res;
}
};
3.改变链表结构
代码如下(示例):
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> res;
ListNode* pre,*cur;
pre = NULL;
cur = head;
while (cur != NULL){
ListNode* tem = cur -> next;
cur -> next = pre;
pre = cur;
cur = tem;
}
while (pre != NULL){
res.push_back(pre -> val);
pre = pre -> next;
}
return res;
}
};