链表的逆序输出c语言
时间: 2024-10-07 20:06:10 浏览: 39
链表的逆序输出在C语言中通常通过迭代或递归的方式来实现。以下是使用迭代方法的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建一个新的节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 逆序遍历并打印链表
void reversePrintList(Node* head) {
Node* prev = NULL; // 记录前一个节点
Node* current = head; // 当前节点
while (current != NULL) {
Node* nextTemp = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // 更新prev为当前节点
current = nextTemp; // 更新current为原next节点
}
// 输出逆序后的链表
while (prev != NULL) {
printf("%d ", prev->data);
prev = prev->next;
}
}
int main() {
// 创建一个测试链表
Node* head = createNode(1);
head->next = createNode(2);
head->next->next = createNode(3);
head->next->next->next = createNode(4);
// 打印原始链表
printf("Original list: ");
printList(head); // 自定义printList函数用于打印链表
// 逆序输出链表
reversePrintList(head);
printf("\nReversed list: ");
return 0;
}
```
在这个例子中,我们首先创建了一个链表,然后定义了一个`reversePrintList`函数,它会改变每个节点的`next`指针指向前面的节点,最终实现逆序。在`main`函数中,先打印原始链表,再逆序后打印。
阅读全文