删除单链表结点 用java示例
时间: 2023-12-10 18:41:44 浏览: 50
下面是一个Java示例,实现了删除单链表中指定值的结点:
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class Solution {
public ListNode removeElements(ListNode head, int val) {
// 处理头结点
while (head != null && head.val == val) {
head = head.next;
}
if (head == null) {
return null;
}
// 处理非头结点
ListNode prev = head;
ListNode curr = head.next;
while (curr != null) {
if (curr.val == val) {
prev.next = curr.next;
} else {
prev = curr;
}
curr = curr.next;
}
return head;
}
}
```
通过遍历单链表,用 `prev` 和 `curr` 两个指针分别指向相邻的两个结点,判断当前结点的值是否与要删除的值相等,如果相等则将 `prev` 的 `next` 指针指向 `curr` 的 `next` 结点,否则将 `prev` 指针移到 `curr` 所在的位置。注意需要处理头结点和删除所有结点的情况。