c语言反转链表核心代码
时间: 2024-10-16 16:14:22 浏览: 30
在 C 语言中,反转一个链表的核心代码通常涉及三个指针:prev、current 和 next,其中 prev 初始化为空,current 从头结点开始,next 指向当前节点的下一个节点。以下是反转单向链表的基本算法:
```c
struct Node {
int data;
struct Node* next;
};
// 函数声明
struct Node* reverseList(struct Node* head);
// 反转链表函数
struct Node* reverseList(struct Node* head) {
struct Node* prev = NULL; // 初始化前驱为NULL
struct Node* current = head; // 初始化当前节点为头节点
struct Node* next暂存;
while (current != NULL) { // 当有节点时,继续循环
next = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点指向前驱
prev = current; // 更新前驱为当前节点
current = next; // 更新当前节点为下一个节点
}
return prev; // 返回新头节点,即原尾节点
}
```
这个函数通过改变每个节点的 `next` 指针来实现链表的反转。当遍历到链表的最后一个节点时,`current` 会变为 `NULL`,此时返回 `prev` 即为新的头节点。
阅读全文