117.info
人生若只如初见

java单链表反转代码怎么写

以下是一个示例的Java单链表反转代码:

class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
    }
}

public class LinkedListReverse {
    public static ListNode reverse(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }

        ListNode prev = null;
        ListNode curr = head;
        ListNode next = null;

        while (curr != null) {
            next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }

        return prev;
    }

    public static void printList(ListNode head) {
        ListNode curr = head;
        while (curr != null) {
            System.out.print(curr.val + " ");
            curr = curr.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        ListNode second = new ListNode(2);
        ListNode third = new ListNode(3);
        ListNode fourth = new ListNode(4);

        head.next = second;
        second.next = third;
        third.next = fourth;

        System.out.println("Original List:");
        printList(head);

        ListNode reversedHead = reverse(head);

        System.out.println("Reversed List:");
        printList(reversedHead);
    }
}

这个示例中,我们定义了一个ListNode类来表示链表中的节点。然后在LinkedListReverse类中,我们实现了一个reverse方法来反转链表。反转过程中,我们使用了三个指针prevcurrnext,分别表示当前节点的前一个节点、当前节点和当前节点的下一个节点。我们通过依次修改节点的next指针,使得每个节点指向它的前一个节点,从而实现链表的反转。

main方法中,我们创建了一个简单的链表,并调用reverse方法来反转链表。最后,我们使用printList方法来打印反转后的链表。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fefd8AzsLAwNWBFE.html

推荐文章

  • JAVA的Collections类中shuffle的用法

    Collections类中的shuffle方法用于将指定的List按随机顺序重新排列。下面是shuffle方法的用法: 使用shuffle方法: List numbers = new ArrayList();
    numbe...

  • java中进行两个txt文本文档的数据对比,找不不相同的字

    可以使用Java的IO流和字符串处理来实现两个txt文本文档的数据对比,找出不相同的字。
    以下是一个简单的示例代码:
    import java.io.BufferedReader;

  • java.lang.abstractMethodError的错误解决

    java.lang.abstractMethodError是一个运行时错误,它发生在子类没有实现父类或接口的抽象方法的情况下。这个错误通常是由于类的版本不一致或类加载器加载了错误的...

  • java中 Scanner对象.nextInt() 方法什么意思

    Scanner对象的nextInt()方法是用来读取下一个整数输入的。
    它会等待用户输入一个整数,并将其作为方法的返回值返回。如果用户输入的不是一个有效的整数,ne...

  • c语言怎么实现单链表反转

    要实现单链表的反转,可以按照以下步骤进行: 定义一个指针变量current,指向链表的头节点。
    定义两个指针变量prev和next,分别表示当前节点的前一个节点和...

  • debian怎么开启ssh服务

    要在Debian中启用SSH服务,请按照以下步骤操作: 打开终端,以root用户身份登录。
    安装OpenSSH服务器软件包(如果尚未安装)。运行以下命令:apt-get updat...

  • c语言自旋锁实现的原理是什么

    C语言自旋锁的实现原理是通过循环检查锁的状态来实现的。当一个线程想要获得自旋锁时,它会不断地尝试获取锁,直到成功为止。
    具体而言,实现自旋锁通常会使...

  • vb设置定时器的步骤是什么

    设置定时器的步骤如下: 在代码中引入 System.Timers 命名空间。
    创建一个 Timer 对象。
    设置 Timer 的 Interval 属性,表示定时器触发的时间间隔。