用c语言生成一个单链表,并使其具有插入删除,按值查找的功能
时间: 2023-02-18 12:38:08 浏览: 172
使用c语言实现单链表
4星 · 用户满意度95%
,可以这样:
struct Node {
int data;
struct Node* next;
};
// 在头结点之前插入新的结点
void insert(struct Node** head_ref, int new_data)
{
// 为新结点分配内存
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
// 将新结点的数据域设置为给定值
new_node->data = new_data;
// 将新结点的next指针设置为头结点
new_node->next = (*head_ref);
// 将头结点设置为新结点
(*head_ref) = new_node;
}
// 删除给定值的结点
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的下一个结点,即跳过temp结点
prev->next = temp->next;
free(temp); // 释放被删除的结点
}
// 在链表中查找给定值
bool search(struct Node* head, int x)
{
struct Node* current = head; // 从头结点开始
while (current != NULL)
{
if (current->data == x)
return true;
current = current->next;
}
return false;
}
阅读全文