题解 | #从尾到头打印链表#

从尾到头打印链表

https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    void recursion(ListNode* head, vector<int>& res){
        if (head != 0) {
            recursion(head->next, res);
            res.push_back(head->val);
        }
    }
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> res;
        recursion(head,res);
        return res;
    }
};

因为是要逆序写入到数组中,链表只能顺序读取节点,因此考虑栈先进后出的性质,通过递归实现。

注意递归函数的形式参数需用vector<int>& res来保证res值可以更改,而vector<int> res意味着函数会创建一个副本,而不会改变输入的实参。

全部评论

相关推荐

Atica:笑死了我也收到这个,第一时间还以为是婉拒我,然后一看他把卖课名片推过来大彻大悟
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务