从尾到头打印链表
Posted dreamstick
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从尾到头打印链表相关的知识,希望对你有一定的参考价值。
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
方法1:利用递归
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; printListFromTailToHead(res,head); return res; } void printListFromTailToHead(vector<int>& res,ListNode* node) { if(node!=NULL) { printListFromTailToHead(res,node->next); res.push_back(node->val); } } };
方法2:利用栈
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; stack<int> stk; int value; ListNode* p = head; while(p!=NULL) { stk.push(p->val); p = p->next; } while(!stk.empty()) { value = stk.top(); stk.pop(); res.push_back(value); } return res; } };
方法3:利用stl中algorithm库的反转函数reverse
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; ListNode* p = head; while(p!=NULL) { res.push_back(p->val); p = p->next; } reverse(res.begin(),res.end()); return res; } };
以上是关于从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章