以下是一個示例的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
方法來反轉鏈表。反轉過程中,我們使用了三個指針prev
、curr
和next
,分別表示當前節點的前一個節點、當前節點和當前節點的下一個節點。我們通過依次修改節點的next
指針,使得每個節點指向它的前一個節點,從而實現鏈表的反轉。
在main
方法中,我們創建了一個簡單的鏈表,并調用reverse
方法來反轉鏈表。最后,我們使用printList
方法來打印反轉后的鏈表。