用c++编写一个程序,实现单链表删除其元素值为x的节点(x是唯一的)不能用类
时间: 2024-11-12 22:40:53 浏览: 13
好的,你可以使用C++的结构体和指针来实现一个简单的单链表,然后遍历链表删除值为`x`的节点。这里是一个基本的示例:
```cpp
#include <iostream>
// 定义单链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 删除值为x的节点的辅助函数
void deleteNode(ListNode*& head, int x) {
if (head == nullptr) return; // 如果链表为空,则直接返回
ListNode* current = head;
while (current != nullptr && current->val != x) { // 遍历链表直到找到x或到达尾部
ListNode* temp = current;
current = current->next;
delete temp; // 找到x就删除该节点
}
if (current != nullptr) head = current; // 跳过已删除的节点并更新头指针
}
int main() {
// 创建一个例子链表
ListNode* list = new ListNode(1);
list->next = new ListNode(2);
list->next->next = new ListNode(3);
list->next->next->next = new ListNode(x); // 其中x是你想要删除的值
std::cout << "Before deletion: ";
printList(list);
deleteNode(list, x); // 删除所有值为x的节点
std::cout << "After deletion: ";
printList(list);
return 0;
}
// 辅助函数,用于打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " -> ";
temp = temp->next;
}
std::cout << "nullptr" << std::endl;
}
```
在这个示例中,我们首先创建了一个包含一些节点的链表,然后使用`deleteNode`函数删除所有值为`x`的节点。`printList`函数用于展示链表的内容。
阅读全文