cpp删除单链表中值为X的元素
时间: 2024-03-25 21:36:54 浏览: 56
移除链表元素.md
好的,这是一个简单的代码实现:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* deleteNode(ListNode* head, int val) {
ListNode* dummy = new ListNode(-1);
dummy->next = head;
ListNode* cur = dummy;
while (cur->next != nullptr) {
if (cur->next->val == val) {
ListNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
}
else {
cur = cur->next;
}
}
ListNode* newHead = dummy->next;
delete dummy;
return newHead;
}
int main() {
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
head->next->next->next->next = new ListNode(5);
int val = 3;
head = deleteNode(head, val);
ListNode* cur = head;
while (cur != nullptr) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
return 0;
}
```
这里我使用了一个带有`val`和`next`成员的结构体`ListNode`来表示链表中的节点。我定义了一个名为`deleteNode()`的函数,它接受一个指向链表头节点的指针`head`和一个要删除的值`val`。该函数在链表中遍历每个节点,如果它的下一个节点的值等于`val`,则删除下一个节点。最后,返回新的链表头节点的指针。
在主函数中,我创建了一个包含五个节点的链表,并将要删除的值设置为3。然后,我调用`deleteNode()`函数来删除该链表中的值为3的节点,并输出剩余节点的值。
阅读全文