java反转单向链表使用头插法12345
时间: 2024-11-13 16:41:57 浏览: 12
Java实现单向链表反转
在Java中,反转单向链表通常使用迭代的方式,特别是通过头插法(也称为“前驱节点”方法)。对于给定的链表1->2->3->4->5,其步骤可以这样描述:
1. 首先创建一个新的头结点,将其`next`指向原来的头结点,因为最终新链表的头将是原链表的最后一个节点。
2. 然后遍历原链表,每次迭代中,我们将当前节点的`next`指向前一个已经插入到新链表的节点,而不是原来的下一个节点。
3. 在每一步操作中,我们都更新两个变量:一个是当前节点(current),另一个是新的头节点(prev)。开始时,`prev`设为新链表的头,`current`设为原链表的头。
4. 当`current`变为null时,说明已遍历完原链表,此时`prev`就是新链表的尾部,所以将`prev.next`设为null,完成链表的构建。
以下是简单的Java代码实现:
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
ListNode reverseList(ListNode head) {
ListNode prev = new ListNode(0);
ListNode current = head;
while (current != null) {
ListNode nextTemp = current.next; //保存当前节点的下一个节点
current.next = prev; //将当前节点的next指向前一个节点
prev = current; //移动prev到current的位置
current = nextTemp; //移动current到下一个未处理的节点
}
return prev; //返回新链表的头节点
}
```
阅读全文