已知一无头结点的单链表,头指针为HEAD,写一算法,删除表中数据值为f的所有元素
时间: 2024-03-23 11:42:39 浏览: 122
无头节点的单链表
以下是删除单链表中值为f的所有元素的算法实现:
```
ListNode* prev = NULL; // 前驱结点
ListNode* curr = HEAD; // 当前结点
while (curr != NULL) {
if (curr->val == f) {
if (prev == NULL) { // 删除头结点
HEAD = curr->next;
} else {
prev->next = curr->next;
}
ListNode* temp = curr;
curr = curr->next;
delete temp;
} else {
prev = curr;
curr = curr->next;
}
}
```
算法思路:
使用两个指针变量:prev 和 curr,分别指向当前结点的前驱结点和当前结点。从头结点开始遍历单链表,如果当前结点的值等于 f,则删除当前结点。删除当前结点时,需要将前驱结点的 next 指针指向当前结点的下一个结点,然后释放当前结点的内存空间。如果当前结点的值不等于 f,则更新 prev 和 curr 指针的值,继续向后遍历单链表。当 curr 指向空结点时,遍历结束。
阅读全文