代码功能
定义了一个ListNode类,用于表示单链表的节点,每个节点包含一个整数值和一个指向下一个节点的引用。
在ReverseLinkedList类的main方法中,创建了一个包含从1到10的整数的单链表。
定义了一个printList方法,用于打印链表的节点值。
定义了一个reverseList方法,用于逆序单链表。
在main方法中,首先打印原始链表,然后调用reverseList方法逆序链表,并再次打印逆序后的链表。
代码
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public class ReverseLinkedList {
public static void main(String[] args) {
// 创建链表
ListNode head = new ListNode(1);
ListNode current = head;
for (int i = 2; i <= 10; i++) {
current.next = new ListNode(i);
current = current.next;
}
// 输出原始链表
System.out.println("原始链表:");
printList(head);
// 逆序链表
head = reverseList(head);
// 输出逆序后的链表
System.out.println("逆序后的链表:");
printList(head);
}
// 逆序链表的函数
public static ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode current = head;
ListNode next = null;
while (current != null) {
next = current.next; // 保存下一个节点
current.next = prev; // 反转当前节点的指针
prev = current; // 前进到下一个节点
current = next;
}
return prev; // 新的头节点
}
// 打印链表的函数
public static void printList(ListNode head) {
ListNode current = head;
while (current != null) {
System.out.print(current.val + " ");
current = current.next;
}
System.out.println();
}
}