链表倒序输出 - C 语言解析165


链表是一种数据结构,其中元素以线性方式组织。每个元素包含一个数据值和指向下一个元素的指针。在某些情况下,我们需要将链表中的元素按相反的顺序输出。本文将介绍在 C 语言中倒序输出链表的算法和实现。

算法

倒序输出链表的算法如下:1. 使用两个指针(prev 和 curr),初始值均为 NULL。
2. 遍历链表,将当前指针 curr 移动到下一个元素。
3. 将 prev 指针指向 curr。
4. 将 curr 指针移动到 prev 指针之前指向的元素。
5. 重复步骤 2-4 直到 curr 指针为 NULL。

在算法执行过程中,prev 指针将指向链表中倒数第二个元素,以此类推,直到 prev 指针指向第一个元素。

实现

以下是在 C 语言中倒序输出链表的代码实现:```c
#include
#include
struct Node {
int data;
struct Node *next;
};
void print_list_reverse(struct Node *head) {
struct Node *prev = NULL, *curr = head;
while (curr) {
struct Node *next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
while (prev) {
printf("%d ", prev->data);
prev = prev->next;
}
}
```

使用方法

要使用该函数倒序输出链表,请按照以下步骤操作:1. 创建一个链表并插入元素。
2. 调用 `print_list_reverse` 函数,并将链表头作为参数传递。

示例

以下是一个示例,展示如何使用该函数:```c
#include
#include
struct Node {
int data;
struct Node *next;
};
void print_list_reverse(struct Node *head);
int main() {
struct Node *head = NULL;
head = insert_at_end(head, 10);
head = insert_at_end(head, 20);
head = insert_at_end(head, 30);
head = insert_at_end(head, 40);
printf("Original list: ");
print_list(head);
printf("Reversed list: ");
print_list_reverse(head);
return 0;
}
```

上面的示例将打印以下输出:```
Original list: 10 20 30 40
Reversed list: 40 30 20 10
```

2024-11-16


上一篇:C 语言中高效查找素数的函数

下一篇:揭秘 C 语言求差程序输出 0 的原因