码迷,mamicode.com
首页 > 其他好文 > 详细

[剑指OFFER] 从尾到头打印链表

时间:2015-06-12 13:06:04      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

输入一个链表,从尾到头打印链表每个节点的值。返回新链表的头结点。
 
 
方法一:用stack,或者最好vector.reverse
        vector<int> printListFromTailToHead(struct ListNode* head)
        {
            stack<int> st;
            vector<int> rtn;

            while(head)
            {
                st.push(head->val);
                head= head->next;
            }

            while(!st.empty())
            {
                int tmp = st.top();
                st.pop();
                rtn.push_back(tmp);
            }
            
            return rtn;
        }

 

方法二:递归在本质上就是一个栈结构,于是很自然地想到用递归来实现。要实现反过来输出链表,每访问到一个结点的时候,先递归输出它后面的结点,再输出该结点自身,这样链表的输出结构就反过来了。

        vector<int> printListFromTailToHead1(struct ListNode* head)
        {
            vector<int> rtn;
            print(head, rtn);
            return rtn;
        }

        void print(ListNode* head, vector<int> &rtn)
        {
            if(head == NULL)
                return;

            print(head->next, rtn);
            rtn.push_back(head->val);
        }

 

 

 

[剑指OFFER] 从尾到头打印链表

标签:

原文地址:http://www.cnblogs.com/diegodu/p/4571224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!