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

逆序打印单链表

作者: 好学人 | 来源:发表于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);
    }
}

总结:

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

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

相关文章

  • 逆序打印单链表

    题目描述: 逆序打印单链表,要求不能改变链表结构。 思路分析: 由于单链表只能顺序遍历(从头到尾遍历)而不能逆向遍...

  • 逆序打印单链表

    结果 思路 思路一: 先将链表翻转,再打印,但会破坏原来结构 也可以再翻转一次恢复原来的结构 思路二(推荐): 用...

  • 单链表逆序打印

    思路 解题思路有多种: 1.实现单链表逆转,然后输出2.利用栈3.递归等等 递归方法 这里主要使用递归方法(应该也...

  • 2.单链表

    该部分包含以下内容-单链表的增删改查-计算链表长度-逆序链表-寻找(删除)链表倒数第K个元素-逆序打印链表(使用栈)

  • 链表(上:链表反转)

    1. 逆序打印链表(单链表) 给定单链表,从尾到头打印每个节点的值,不同的值之间用空格隔开。比如:1>2>3>4>...

  • LeetCode 2. Add Two Numbers

    单链表逆序相加

  • Leetcode-Medium-2 Add Two Number

    题目 思路 给定两哥数字非负的单链表,每条单链表逆序存储着一个数字。将两条单链表存储的数字相加,并逆序放入单链表中...

  • 逆序单链表

    1、对一个单链表进行逆序操作。逆序之前为 head-->A-->B-->C-->None逆序之后为 head-->...

  • 单链表逆序

    1.创建链表结构 2.新建节点 3.打印函数 4.main函数实现 5.打印结果

  • 面试:用 Java 逆序打印链表

    面试:用 Java 逆序打印链表 昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入...

网友评论

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

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