用c语言设计一个算法,将带头的单链表逆置
时间: 2024-09-30 08:16:14 浏览: 18
在 C 语言中,我们可以使用迭代的方式来设计一个简单算法来逆置带头结点的单链表。这里是一个基本的步骤:
1. 定义两个指针,`prev` 和 `current`,初始时都指向头节点。
2. 当 `current` 指针不为空时,进行循环操作:
- 将 `current` 的下一个节点赋值给 `temp`(临时存储当前节点的下一个节点)
- 更新 `current` 的下一个节点为 `prev`
- 移动 `prev` 和 `current` 向前,即 `prev = current`, `current = temp`
3. 循环结束后,`prev` 就指向了新的头节点。
下面是对应的伪代码和 C 语言代码实现:
```c
// 结构体定义链表节点
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数定义逆置链表
Node* reverseList(Node* head) {
Node* prev = NULL; // 初始化prev为NULL
Node* current = head; // 初始化current为头节点
while (current != NULL) { // 当current非空时
Node* temp = current->next; // 保存当前节点的下一个
current->next = prev; // 更新当前节点的next为prev
prev = current; // 移动prev
current = temp; // 移动current
}
return prev; // 返回新头节点
}
```