使用尾指针清空单循环链表用java实现
时间: 2024-10-07 08:08:16 浏览: 15
在Java中,使用尾指针(也叫迭代器)清空单循环链表(即只有一个头结点,没有尾节点的链表)可以避免遍历整个链表,提高效率。这是一种常见的优化技巧,特别适用于链表长度未知或者非常长的情况。以下是具体的Java代码实现:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public void emptyList(ListNode head) {
// 初始化一个指针为head,另一个为None(表示结束)
ListNode dummyHead = new ListNode(0);
dummyHead.next = head;
// 使用两个指针,一个正常走,一个更新尾部
ListNode tail = dummyHead;
ListNode runner = head;
// 当runner不为空时,继续遍历并删除节点
while (runner != null) {
ListNode nextTemp = runner.next; // 记录下一个节点
runner.next = null; // 将当前节点连接到尾部
runner = nextTemp; // 移动runner到下一个位置
tail.next = runner; // 更新tail指向下一个节点
tail = tail.next; // tail向前移动
}
// 最终尾部节点指向空,链表被清空
head = dummyHead.next;
}
```