C++实现:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点。
时间: 2024-04-30 21:17:13 浏览: 15
好的,我明白了。这个问题可以通过遍历链表并逐一判断节点的值是否满足条件来解决。具体实现可以采用头节点之前添加一个 dummy 节点的做法来简化删除头节点的过程,然后用一个指针 prev 来记录当前节点的前一个节点,当节点满足条件时,让 prev 的 next 指向当前节点的下一个节点即可。以下是代码实现:
```
struct ListNode* removeElements(struct ListNode* head, int val){
struct ListNode *dummy = (struct ListNode *) malloc(sizeof(struct ListNode));
dummy->next = head;
struct ListNode *prev = dummy;
struct ListNode *curr = head;
while (curr != NULL) {
if (curr->val == val) {
prev->next = curr->next;
free(curr);
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
return dummy->next;
}
```
这样就能够实现删除链表中所有满足节点值等于 val 的节点,并返回新的链表头节点。