用c语言缩写单链表倒置算法
时间: 2024-09-17 07:08:35 浏览: 65
在C语言中,我们可以使用迭代或递归的方式来实现单链表的倒置。以下是使用迭代方法的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数声明
Node* reverseList(Node* head);
// 主函数
int main() {
// 创建链表示例
Node* head = malloc(sizeof(Node));
head->data = 1;
Node* second = malloc(sizeof(Node));
second->data = 2;
Node* third = malloc(sizeof(Node));
third->data = 3;
head->next = second;
second->next = third;
// 倒置链表
Node* reversedHead = reverseList(head);
// 打印倒置后的链表
while (reversedHead != NULL) {
printf("%d ", reversedHead->data);
reversedHead = reversedHead->next;
}
return 0;
}
// 实现链表反转的辅助函数
Node* reverseList(Node* node) {
if (node == NULL || node->next == NULL) {
return node;
}
Node* prev = NULL;
Node* current = node;
Node* nextTemp = NULL; // 临时存储下一个节点
// 当前节点指向其后继节点,然后更新当前节点和临时指针
while (current != NULL) {
nextTemp = current->next; // 保存下一个节点
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // 更新prev为当前节点
current = nextTemp; // 移动到下一个节点
}
return prev; // 返回新的头节点
}
阅读全文