《剑指Offer》学习笔记——从尾到头打印链表

来源:互联网 发布:fileinput.min.js 编辑:程序博客网 时间:2024/06/10 22:24

题目:输入一个链表,从尾到头打印链表每个节点的值。

输入:链表的表头

输出:需要打印的“新链表”的表头

面试小提示:在面试中如果我们打算修改输入的数据,最好先问面试官是不是允许做修改


解决这个问题肯定是要遍历链表,遍历的顺序是从头到尾的顺序,而输出的顺序是从尾部到头部,这是典型的“后进先出”,我们自然而然想到用“栈”来实现这种后进先出的结构。

这种思路的实现代码是:

/***  struct ListNode {*        int val;*        struct ListNode *next;*        ListNode(int x) :*              val(x), next(NULL) {*        }*  };*/class Solution {public:    vector<int> printListFromTailToHead(struct ListNode* head) {                vector<int> res;        std::stack<ListNode*> nodes;        ListNode* pnode=head;        while(pnode!=NULL)        {            nodes.push(pnode);            pnode=pnode->next;        }                while(!nodes.empty())        {            pnode=nodes.top();            res.push_back(pnode->val);            nodes.pop();        }                 return res;    }};


0 0