逆序打印单链表

2019-10-01  本文已影响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);
    }
}

总结:

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

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

上一篇 下一篇

猜你喜欢

热点阅读