带头结点的单链表逆置,C语言
时间: 2024-11-13 09:17:00 浏览: 18
在C语言中,带头结点的单链表逆置(也叫反转链表)可以通过迭代或递归的方式来实现。这里我们展示一种常见的迭代方法:
首先,我们需要定义链表节点结构体,包含一个指向下一个节点的指针和一个数据域:
```c
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
```
接下来是逆置链表的函数,通过三个指针`prev`, `current`, 和 `next`来实现:
```c
void reverseList(ListNode** head) {
ListNode* prev = NULL;
ListNode* current = *head;
ListNode* next;
// 遍历整个链表
while (current != NULL) {
// 获取当前节点的下一个节点
next = current->next;
// 将当前节点的next指向前一个节点
current->next = prev;
// 更新prev, current指针
prev = current;
current = next;
}
// 新的头节点就是原链表的最后一个节点
*head = prev;
}
```
在这个函数中,我们逐个改变每个节点的`next`指针,使得它们都指向前一个节点,最终实现了链表的逆置。
阅读全文