用c语言写一段单链表的插入、删除的代码
时间: 2024-12-06 19:25:33 浏览: 60
C语言单链表实现19个功能完全详解.zip_C语言_C语言单链表_单链表
5星 · 资源好评率100%
在C语言中,我们可以使用结构体和指针来实现单链表的基本操作——插入和删除。这里是一个简单的例子:
首先,我们定义一个链表节点的结构体:
```c
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
```
**插入节点:**
- 插入在头部(head):
```c
void insertAtHead(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
- 插入在尾部(尾插法):
```c
void insertAtTail(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
if (*head == NULL) {
*head = newNode;
return;
}
ListNode* lastNode = *head;
while (lastNode->next != NULL)
lastNode = lastNode->next;
lastNode->next = newNode;
}
```
**删除节点:**
- 删除指定值的节点(若存在):
```c
void deleteNode(ListNode** head, int value) {
ListNode* 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); // 释放当前节点的内存
}
```
阅读全文