在单链表中按值删除C++
时间: 2024-06-12 10:10:53 浏览: 68
在单链表中按值删除节点,需要遍历链表找到要删除的节点,然后将其前驱节点的 next 指针指向其后继节点即可。具体实现可以参考下面的代码:
```c++
void deleteNode(ListNode* head, int val) {
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr != nullptr && curr->val != val) {
prev = curr;
curr = curr->next;
}
if (curr != nullptr) {
if (prev == nullptr) {
head = curr->next;
} else {
prev->next = curr->next;
}
delete curr;
}
}
```
其中,head 表示链表的头节点,val 表示要删除的节点的值。
相关问题
单链表按值删除操作C++
在C++中,单链表按值删除操作通常涉及到遍历链表找到目标节点并替换或移除它。这里是一个简单的示例,假设我们有一个结构体`Node`表示链表节点:
```cpp
struct Node {
int value;
Node* next; // 指向下一个节点的指针
};
// 删除值为target的节点
void deleteNode(Node*& head, int target) {
if (head == nullptr) { // 链表为空,直接返回
return;
}
Node* current = head;
while (current != nullptr && current->value != target) {
// 找到目标节点前一个节点
current = current->next;
}
if (current == nullptr) { // 目标节点未找到,链表中不存在该值
return;
}
// 如果找到了目标节点,更新当前节点的next指向下一个节点
if (current->next != nullptr) {
current->next = current->next->next;
} else { // 如果目标是最后一个节点,将头指针指向nullptr
head = nullptr;
}
}
```
单链表的插入和删除c++
单链表的插入和删除操作是链表的基本操作之一。在C语言中,可以通过以下代码实现单链表的插入和删除:
插入操作的代码如下:
```c
void InsertNode(struct Node **head, int data) {
struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
struct Node *current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
```
删除操作的代码如下:
```c
void DeleteNode(struct Node **head, int data) {
if (*head == NULL) {
return;
}
struct Node *current = *head;
struct Node *prev = NULL;
if (current->data == data) {
*head = current->next;
free(current);
return;
}
while (current != NULL && current->data != data) {
prev = current;
current = current->next;
}
if (current == NULL) {
return;
}
prev->next = current->next;
free(current);
}
```
以上代码分别实现了单链表的插入和删除操作。插入操作将新节点插入到链表的末尾,如果链表为空,则将新节点作为头节点;删除操作根据给定的数据值删除相应的节点,如果找到匹配的节点,则将其从链表中移除。
阅读全文
相关推荐













