剑指offer 面试题6:从尾到头打印链表
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
编程思想
从前往后遍历,将值存入栈中,然后打印栈中内容即可。
编程实现
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { stack<int>st; vector<int>vec; ListNode* p = head; while(p != nullptr) { st.push(p->val); p = p->next; } while(!st.empty()) { vec.push_back(st.top()); st.pop(); } return vec; } };
题目总结
还可以用递归来做,但链表非常长时,容易栈溢出,故用栈来辅助做较好。