逆序打印链表可以将层序打印二叉树的思路做一个借鉴和对比,整体思想都是找一个容器将每一个节点都装起来,再根据这个容器的特性将每一个节点输出出来,顺序遍历第一个想到的容器则是队列,而逆序打印所能够想到的就是与之对应的栈。具体实现源码如下:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
stack<ListNode*>s;
vector<int>result;
if(head==NULL||head->next==NULL){
return result;
}
ListNode* pNode=head;
while(pNode!=NULL){
s.push(pNode);
pNode=pNode->next;
}
while(!s.empty()){
pNode=s.top();
result.push_back(pNode->val);
s.pop();
}
return result;
}
};
浙公网安备 33010602011771号