从尾到头打印链表

来源:互联网 发布:debian安装软件命令 编辑:程序博客网 时间:2024/06/08 07:16

题目描述

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


解题思路

两种方法。第一种是递归法,对于每个节点head,先从尾到头打印以head->next为头节点的链表,再打印head本身的值。


第二种方法用栈,从前到后遍历一遍链表,将每个节点的值依次压到栈中,然后再将栈中元素依次出栈即可。


代码

/***  struct ListNode {*        int val;*        struct ListNode *next;*        ListNode(int x) :*              val(x), next(NULL) {*        }*  };*/class Solution {public:    vector<int> printListFromTailToHead(ListNode* head) {        vector<int> result;                if (!head)            return result;                //递归法        /*        if (head->next == NULL)        {            result.push_back(head->val);            return result;        }                result = printListFromTailToHead(head->next); //递归,先打印后面的节点        result.push_back(head->val); //再打印当前结点                return result;*/                //用栈法        std::stack<int> valStack;        while (head != NULL)        {            valStack.push(head->val);            head = head->next;        }                while (!valStack.empty())        {            result.push_back(valStack.top());            valStack.pop();        }                return result;    }};



原创粉丝点击