数据结构c语言单列表的删除和逆置
时间: 2024-11-12 18:44:20 浏览: 3
在C语言中,数据结构单链表(也称为简单链表)的删除和逆置操作可以分别通过以下几个步骤完成:
**删除操作**:
1. 删除节点:首先,你需要有一个指针指向要删除的节点。如果要删除的是头结点,则需要特殊处理;对于其他节点,更新前一个节点的`next`指针,使其跳过被删除节点。
```c
struct Node* deleteNode(struct Node* head, int key) {
struct Node *temp = head, *prev;
if (temp && temp->data == key) {
head = temp->next; // 如果头结点要删除,直接替换
free(temp); // 释放头结点内存
return head;
}
while (temp && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (!temp) return head; // 没找到要删除的节点,返回原链表
prev->next = temp->next; // 删除当前节点
free(temp); // 释放临时节点内存
return head;
}
```
**逆置操作**:
1. 使用三个指针:一个指向头节点,一个后移节点(初始为空),另一个记录当前节点(初始为头节点)。
2. 循环遍历链表,每次将当前节点的`next`指向前一个节点,并移动指针。
```c
void reverseList(struct Node **head) {
struct Node* prev = NULL, *current = *head, *next;
while (current) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
*head = prev; // 更新头节点
}
```
阅读全文