用c语言写出逆转线性单链表的算法,要求简洁
时间: 2024-09-22 13:01:39 浏览: 41
在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 = createLinkedList(); // 这里假设createLinkedList()是你自己定义的一个创建链表的函数
// 反转链表
Node* reversedHead = reverseList(head);
// 打印反转后的链表...
printLinkedList(reversedHead); // 这里假设printLinkedList()也是一个自定义函数
return 0;
}
// 实现逆转链表函数
Node* reverseList(Node* head) {
if (head == NULL || head->next == NULL) { // 如果链表为空或只有一个元素,直接返回
return head;
}
Node* prev = NULL; // 指向当前节点的前一个节点
Node* curr = head; // 当前处理的节点
while (curr != NULL) { // 遍历整个链表
Node* nextTemp = curr->next; // 保存下一个节点
curr->next = prev; // 将当前节点的指针指向前一个节点
prev = curr; // 更新前一个节点为当前节点
curr = nextTemp; // 移动到下一个节点
}
return prev; // 返回新的头节点
}
阅读全文