不带头结点的单链表实现就地逆置方法,java代码
时间: 2024-09-28 22:13:29 浏览: 34
在Java中,我们可以使用迭代的方式不借助额外空间来实现单链表的就地逆置(即反转)。这里是一个简单的示例代码:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
public void reverseList(ListNode head) {
if (head == null || head.next == null) {
return; // 如果链表为空或只有一个节点,直接返回
}
ListNode current = head;
ListNode prev = null; // 初始化前驱节点为null
while (current != null) {
ListNode nextTemp = current.next; // 临时保存当前节点的下一个节点
current.next = prev; // 将当前节点指向前驱节点
prev = current; // 更新前驱节点为当前节点
current = nextTemp; // 移动到下一个节点
}
head = prev; // 最后更新头节点为反转后的链表的新头
}
```
在这个代码里,我们通过遍历链表,每次改变当前节点的next指向前驱节点,然后将前驱节点和当前节点向后移动一位,直到遍历完整个链表。最后,链表的头节点会变成原尾节点。
阅读全文