有一个单链表l(至少有1个结点),其头结点指针为head,\n\n编写一个过程将l逆置,即最后一个结点变成第一个结点,\n\n原来倒数第二个结点变成第二个结点,如此等等。java
时间: 2024-11-09 15:30:06 浏览: 5
已知head指向一个带头结点的单向链表
在Java中,可以使用迭代或者递归的方式反转单链表。这里我会提供一种常见的迭代方法:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public void reverseList(ListNode head) {
// 创建两个指针,一个指向当前节点,另一个指向前一个节点
ListNode prev = null, curr = head;
// 当前节点不为空时,循环遍历整个链表
while (curr != null) {
// 将当前节点的next指向前一个节点
ListNode temp = curr.next;
curr.next = prev; // 更新当前节点的next
// 移动指针到下一个节点
prev = curr;
curr = temp;
}
// 链表反转完成,返回新的头节点prev
head = prev;
}
```
在这个过程中,我们通过不断交换`curr.next`和`prev`的值,使得每次循环后`curr`都会向后移动一位,并且`prev`会成为`curr`的下一个节点。当`curr`变为`null`时,说明已经遍历到了链表的末尾,此时`prev`就是新链表的头节点。
阅读全文