许文杰的博客

欢迎来到我的博客

剑指offer第二版面试题6:从尾到头打印链表(java)

题目描述:
输入一个链表,从尾到头打印链表每个节点的值。返回新链表。

分析:
可以借助栈也可以使用递归

代码如下:

/**
 * 从尾到头打印列表
 */
public class PrintListReverse {

    public static void main(String[] args) {
        ListNode node1 = new ListNode();
        ListNode node2 = new ListNode();
        ListNode node3 = new ListNode();
        node1.value = 1;
        node2.value = 2;
        node3.value = 3;
        node1.next = node2;
        node2.next = node3;
        node3.next = null;

        // printListReverseByStack(node1); // 调用栈方法
        printListReverseByRecursion(node1); // 调用递归方法
    }

    // 用栈的思想来实现链表的倒序输出
    public static void printListReverseByStack(ListNode headNode) {
        // 初始化栈
        Stack<ListNode> stack = new Stack<>();
        while (headNode != null) {
            stack.add(headNode);
            headNode = headNode.next;
        }
        while (!stack.isEmpty()) {
            System.out.println(stack.pop().value);
        }
    }

    // 使用递归的方法实现
    public static void printListReverseByRecursion(ListNode headNode) {
        if (headNode == null)
            return;
        printListReverseByRecursion(headNode.next);
        System.out.println(headNode.value);
    }
}

// 定义链表结构
class ListNode {
    int value;
    ListNode next;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37672169/article/details/79980490
文章标签: 算法
个人分类: java基础 算法
上一篇剑指offer第二版面试题5:替换空格(java)
下一篇剑指offer第二版面试题7:重建二叉树(java)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭