温馨提示×

java单链表反转代码怎么写

小亿
84
2023-12-20 13:28:13
栏目: 编程语言

以下是一个示例的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方法来打印反转后的链表。

0