单链表的插入和删除用c语言写出
时间: 2024-10-19 21:03:56 浏览: 15
单链表是一种线性的数据结构,其中每个节点包含一个数据元素和一个指向下一个节点的指针。在C语言中,我们可以创建链表并实现插入和删除操作。这里给出简单的插入和删除节点函数:
**1. 插入节点 (Insert a node)**
```c
void insertNode(struct Node** head, int data) {
// 如果链表为空,新建头节点
if (*head == NULL) {
*head = (struct Node*)malloc(sizeof(struct Node));
(*head)->data = data;
(*head)->next = NULL;
}
else { // 否则,从头开始遍历链表
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); // 创建新节点
newNode->data = data;
newNode->next = *head; // 新节点的next指向前一个节点
*head = newNode; // 更新头节点
}
}
```
**2. 删除节点 (Delete a node)**
```c
void deleteNode(struct Node** head, int key) {
if (*head == NULL) {
printf("List is empty.\n");
return;
}
// 遍历查找要删除的节点
struct Node* temp = *head;
struct Node* prev = NULL;
if (temp != NULL && temp->data == key) {
*head = temp->next; // 直接删除头节点
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("Element not found.\n");
return;
}
prev->next = temp->next;
free(temp); // 释放已找到的节点内存
}
```
在这两个函数中,`struct Node`是一个结构体,通常包含整型数据`data`和指向下一个节点的指针`next`。
阅读全文