从尾到头打印链表
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路
反向输出链表,可以用递归也可以借助栈。
递归写法
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
dfs(head);
return res;
}
void dfs(ListNode *head){
if(head==NULL) return ;
dfs(head->next);
res.push_back(head->val);
}
private:
vector<int>res;
};
非递归写法
public:
vector<int> printListFromTailToHead(ListNode* head) {
if(head==NULL ) return res;
while(head){
st.push(head);
head=head->next;
}
while(!st.empty()){
ListNode *now = st.top();
st.pop();
res.push_back(now->val);
}
return res;
}
private:
vector<int>res;
stack<ListNode *>st;
};
本文介绍了一种链表逆序打印的方法,通过递归或非递归方式实现链表节点值从尾到头的顺序输出。递归方法利用了递归的特性先递到链表尾部再返回并打印节点值;非递归方法使用栈来存储链表节点,最后弹出节点并按顺序打印。

435

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



