逆转线性表c语言代码
时间: 2024-12-24 07:02:03 浏览: 3
在 C 语言中,逆转线性表(数组或链表)通常可以使用迭代或递归的方式来完成。这里给出一个简单的迭代方法,它是通过临时变量交换数组元素来达到反转的效果:
```c
#include <stdio.h>
// 用于逆转单向链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 功能:逆转线性表(链表)
void reverseList(Node** head) {
Node* prev = NULL; // 指向前一个节点
Node* current = *head; // 当前处理的节点
Node* nextTemp; // 临时存储当前节点的下一个节点
while (current != NULL) {
nextTemp = current->next; // 保存当前节点的下一个
current->next = prev; // 将当前节点指向prev
prev = current; // prev 更新为当前节点
current = nextTemp; // 继续处理下一个节点
}
*head = prev; // 新的头节点变为原列表的尾部
}
// 主函数测试
int main() {
Node* list[] = {1, 2, 3, 4, 5};
int length = sizeof(list) / sizeof(list[0]);
printf("Original list: ");
for (int i = 0; i < length; i++) {
printf("%d ", list[i]);
}
reverseList(&list);
printf("\nReversed list: ");
for (int i = 0; i < length; i++) {
printf("%d ", list[i]);
}
return 0;
}
```
在这个示例中,`reverseList` 函数接受指向头节点的指针,并通过遍历整个链表,每次将当前节点的 `next` 指针指向前一个节点,逐步实现逆转。
阅读全文