跳到主要内容

简述Java实现逆序打印链表 ?

参考答案:

逆序打印链表是一个常见的链表操作。在Java中,你可以通过递归或迭代的方式来实现这个功能。下面我会给出两种方法来实现逆序打印链表。

方法一:递归

在递归方法中,你可以定义一个递归函数,该函数接收一个链表节点作为参数,并在递归到链表的尾部时开始打印。

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class Solution {
    public void printListFromTailToHead(ListNode listNode) {
        if (listNode == null) {
            return;
        }
        printListFromTailToHead(listNode.next);
        System.out.print(listNode.val + " ");
    }
}

在这个例子中,printListFromTailToHead函数首先检查链表节点是否为空。如果不为空,它会递归地调用自己,参数是下一个节点。然后,它打印当前节点的值。由于递归的特性,这个函数会先打印链表的尾部,然后逐步打印到头部,实现了逆序打印。

方法二:迭代

在迭代方法中,你可以使用栈来实现逆序打印。栈是一种后进先出(LIFO)的数据结构,非常适合用来逆序处理链表。

import java.util.Stack;

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class Solution {
    public void printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        while (!stack.isEmpty()) {
            System.out.print(stack.pop() + " ");
        }
    }
}

在这个例子中,printListFromTailToHead函数首先创建一个空栈。然后,它遍历链表,将每个节点的值压入栈中。由于栈是后进先出的,因此最后压入栈的值会最先被弹出,从而实现了逆序打印。最后,函数遍历栈,打印出每个值。

学习笔记
|||
说点什么吧
 
100:0
鲤跃网
http://www.sunycode.com
讲文明、要和谐
提交学习笔记
0 学习笔记
  • 还没有学习笔记,快来抢沙发吧!