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

从尾到头打印链表

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意味着函数会创建一个副本,而不会改变输入的实参。

全部评论

相关推荐

WillingLing:查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-12 18:53
第一次听说还有无水工作!!!又是被刷新三观的一天
Lynn012:666第一次听到,你给他说这里不方便我们加个微信
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务