删除单链表最后一个给定与定值相等的结点
时间: 2024-09-07 22:03:32 浏览: 51
小白算法积累——单链表15#2个带头结点单链表+提取公共元素+二表合一
在单链表中删除最后一个与给定值相等的节点,可以通过遍历链表一次来实现。首先,我们需要两个指针,一个指针`current`用于遍历链表,另一个指针`last`用于记录最后一个值等于给定值的节点的前一个节点。具体步骤如下:
1. 初始化两个指针`current`和`last`,让它们都指向链表的头节点。
2. 遍历链表,移动`current`指针。在遍历过程中,如果发现`current`指向的节点的值等于给定值,就将`last`指针移动到`current`的前一个节点。
3. 继续遍历直到`current`指针到达链表的末尾。
4. 如果`last`指针不为空,则将`last`指针的`next`指向`null`,完成删除操作。
5. 如果`last`指针为空,则表示链表中没有节点的值等于给定值,不需要删除操作。
示例代码如下(假设使用的是Java语言):
```java
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public void deleteNode(ListNode head, int value) {
if (head == null) return;
ListNode current = head;
ListNode last = null; // 最后一个值等于给定值的节点的前一个节点
ListNode prev = null; // 当前节点的前一个节点
while (current != null) {
if (current.val == value) {
if (last != null) {
last.next = null; // 删除最后一个值等于给定值的节点
}
return;
}
last = prev; // 更新last指针
prev = current; // 更新prev指针
current = current.next; // 移动current指针
}
}
```
阅读全文