已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此 结点,然后删除。C语言
时间: 2024-05-04 21:17:19 浏览: 165
可以按照以下步骤删除单向链表中的某个节点:
1. 遍历链表,找到需要删除的节点。
2. 将该节点的前一个节点的 next 指针指向该节点的下一个节点。
3. 释放需要删除的节点的内存空间。
具体实现的C语言代码如下:
```
void deleteNode(struct Node **head_ref, int key)
{
// 存储头结点
struct Node* temp = *head_ref, *prev;
// 如果头结点本身就是需要删除的结点
if (temp != NULL && temp->data == key)
{
*head_ref = temp->next; // 修改头结点
free(temp); // 释放内存空间
return;
}
// 遍历链表查找需要删除的节点
while (temp != NULL && temp->data != key)
{
prev = temp;
temp = temp->next;
}
// 如果没有找到需要删除的节点
if (temp == NULL) return;
// 删除需要删除的节点
prev->next = temp->next;
free(temp); // 释放内存空间
}
```
其中,head_ref 是指向链表头结点的指针,key 是需要删除的节点的值。在函数中,首先判断头结点是否是需要删除的节点,如果是,则修改头结点,释放内存空间,返回即可;如果头结点不是需要删除的节点,则遍历链表查找需要删除的节点,找到后修改其前一个节点的 next 指针,释放内存空间即可。
阅读全文