单链表反转java头插法
时间: 2024-05-04 10:13:36 浏览: 188
单链表反转是指将链表中的节点顺序颠倒,即原来的头节点变为尾节点,原来的尾节点变为头节点。其中,头插法是一种常用的反转单链表的方法。
在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 newHead = null;
while (head != null) {
ListNode next = head.next;
head.next = newHead;
newHead = head;
head = next;
}
return newHead;
}
public static void main(String[] args) {
// 创建一个示例链表:1 -> 2 -> 3 -> 4 -> 5
ListNode head = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
head.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
// 反转链表
ListNode reversedHead = reverse(head);
// 输出反转后的链表:5 -> 4 -> 3 -> 2 -> 1
while (reversedHead != null) {
System.out.print(reversedHead.val + " ");
reversedHead = reversedHead.next;
}
}
}
```
以上代码中,`reverse`方法使用了头插法来反转单链表。首先判断链表是否为空或只有一个节点,若是,则直接返回原链表。然后,通过循环遍历链表,每次将当前节点的`next`指针指向已反转部分的头节点,并更新新的头节点为当前节点。最后返回新的头节点即可。
阅读全文