剑指offer 面试题5—从尾到头打印链表-阿里云开发者社区

开发者社区> 云计算> 正文

剑指offer 面试题5—从尾到头打印链表

简介: 题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 考虑用栈 public void invertedList1(ListNode head) { if (head == null) { return; } ListNode p = head; Stack<I

题目:
输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

考虑用栈

public void invertedList1(ListNode head) {
        if (head == null) {
            return;
        }
        ListNode p = head;
        Stack<Integer> stack = new Stack<Integer>();
        while (p != null) {
            stack.push(p.val);
            p = p.next;
        }
        while (!stack.isEmpty()) {
            System.out.println(stack.pop());
        }
    }

用递归

public void invertedList(ListNode head) {
        if (head == null) {
            return;
        }
        invertedList(head.next);
        System.out.println(head.val);
    }

有个问题:

当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。显示用栈基于循环实现的代码鲁棒性要好些。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章