美文网首页
逆序打印单链表

逆序打印单链表

作者: 好学人 | 来源:发表于2019-10-01 16:26 被阅读0次

    题目描述:

    逆序打印单链表,要求不能改变链表结构。

    思路分析:

    由于单链表只能顺序遍历(从头到尾遍历)而不能逆向遍历,所以,要逆序打印单链表,则必需要用到先进后出的数据结构,先进后出的数据结构,我们很容易想到

    而运用了栈结构的实现主要有两种:

    1. 递归:递归内部包括了一个方法调用

    2. Stack:Java中栈数据结构的默认实现。

    代码实现:

    方法1:递归实现

    // 使用递归实现链表逆序打印
    public void reversePrint(LinkedNode node) {
        if (node == null) {
            return;
        }
        reversePrint(node.next);
        System.out.println(node.element);
    }
    

    方法2:循环实现

    // 使用栈(Stack)逆序打印单链表
    public void reversePrint(LinkedNode header) {
        Stack<LinkedNode> stack = new Stack<>();
        LinkedNode currentNode = header;
        while (currentNode != null) {
            stack.push(currentNode);
            currentNode = currentNode.next;
        }
        while (stack.size() > 0) {
            LinkedNode node = stack.pop();
            System.out.println(node);
        }
    }
    

    总结:

    由于单链表无法逆序遍历,而且题目要求不得改变链表结构,因此只能使用先进后出的数据结构(栈)。

    而递归方法的调用顺序就正好是一个先进后出的结构,因此可以使用递归实现。当然,也可以借助外部存储空间实现,比如栈,集合等,当然,栈比集合是更合适的选择。

    相关文章

      网友评论

          本文标题:逆序打印单链表

          本文链接:https://www.haomeiwen.com/subject/subkpctx.html