C语言用单链表实现尾插法的插入,删除
时间: 2024-09-30 21:04:50 浏览: 37
在C语言中,单链表是一种动态数据结构,常用于需要频繁插入和删除元素的情况。尾插法是指在链表的最后一个节点之后插入新节点,而删除操作通常会移除指定节点。
**插入操作(尾插法):**
```c
void insertAtEnd(struct Node **head, int data) {
// 如果链表为空
if (*head == NULL) {
*head = (struct Node*)malloc(sizeof(struct Node));
(*head)->data = data;
(*head)->next = NULL; // 新链表只有一个节点
}
else { // 链表不空,找到最后一个节点并插入
struct Node* current = *head;
while (current->next != NULL)
current = current->next;
// 创建新的节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
// 将新节点添加到最后一个节点之后
current->next = newNode;
}
}
```
**删除操作:**
```c
void deleteNode(struct Node **head, int key) {
// 检查链表是否为空
if (*head == NULL) return;
// 查找要删除的节点
struct Node* temp = *head, *prev;
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
// 若未找到节点则返回
if (temp == NULL) return;
// 如果要删除的是头节点
if (prev == NULL) {
*head = temp->next;
}
else {
// 否则删除中间或尾部节点
prev->next = temp->next;
}
free(temp); // 释放已删除节点的内存
}
```
阅读全文