单链表的增删改查c语言代码
时间: 2024-09-25 17:06:03 浏览: 45
单链表是一种线性数据结构,其中每个节点包含数据和指向下一个节点的指针。以下是单链表在C语言中基本的增删改查操作的简单示例:
1. **创建新节点** (插入操作):
```c
struct Node {
int data;
struct Node* next;
};
// 创建新节点并添加到链表末尾
void insert(int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = NULL;
if (head == NULL) { // 如果链表为空
head = newNode; // 新节点作为头结点
} else {
struct Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode; // 将新节点添加到最后一个元素之后
}
}
```
2. **删除节点** (删除操作):
```c
void deleteNode(int value) {
struct Node* temp = head, *prev = NULL;
if (temp != NULL && temp->data == value) {
head = temp->next; // 如果头节点是要删除的,直接更新头节点
free(temp); // 释放头节点
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 没找到要删除的节点
prev->next = temp->next; // 更新前一个节点的指针跳过被删除节点
free(temp); // 释放被删除的节点内存
}
```
3. **修改节点值** (修改操作):
```c
void updateNode(int oldValue, int newValue) {
struct Node* temp = head;
while (temp != NULL) {
if (temp->data == oldValue) {
temp->data = newValue;
break; // 找到目标节点后立即结束循环
}
temp = temp->next;
}
}
```
4. **查找节点** (查找操作):
```c
struct Node* search(int value) {
struct Node* temp = head;
while (temp != NULL) {
if (temp->data == value)
return temp; // 返回找到的节点
temp = temp->next;
}
return NULL; // 如果没找到,返回NULL
}
```
阅读全文