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