在带头结点的单链表中,删除所有值为x的结点
时间: 2023-04-24 16:03:46 浏览: 275
带头结点单链表基本操作.doc
首先,需要遍历整个链表,找到所有值为x的结点。在遍历的过程中,需要记录当前结点的前一个结点,以便删除当前结点。
具体步骤如下:
1. 定义一个指针p,指向头结点的下一个结点。
2. 定义一个指针pre,指向头结点。
3. 遍历整个链表,当p不为空时,执行以下操作:
- 如果p的值等于x,将pre的next指针指向p的下一个结点,然后释放p结点的内存。
- 如果p的值不等于x,将pre指针指向p。
- 将p指针指向下一个结点。
4. 返回头结点。
代码实现如下:
```
void deleteNodeWithValueX(Node* head, int x) {
Node* p = head->next;
Node* pre = head;
while (p != NULL) {
if (p->data == x) {
pre->next = p->next;
free(p);
p = pre->next;
} else {
pre = p;
p = p->next;
}
}
}
```
阅读全文