今天分享一道剑指offer上的题:从尾到头打印链表
题目要求:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路:
首先看到从尾到头打印这句话,就应该记住栈的使用,栈的原则就是后进先出,所以这道题拿栈解决会比较简单,将链表中的元素先依次都压入栈中,然后依次弹出存到数组中。
实现代码:
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
ListNode* p = head;
stack<int> s; //使用栈存贮再弹出正好就是逆序的
vector<int> res; //然后申请一个容器res存储结果数据
while (p != NULL){
s.push(p->val);
p = p->next;
}
int len = s.size();
for (int i = 0; i<len; i++){
res.push_back(s.top());
s.pop();
}
return res;
}
};
代码比较简单易懂我想也就不需要过多解释了,如果有什么不明白的可以在下面留言评论,我会及时解答!