. 设计一个算法,从右向左打印一个双链表中各个结点的值。用c语言实现
时间: 2024-10-10 18:08:43 浏览: 56
在C语言中设计一个从右向左遍历双链表并打印每个节点的值,你可以使用迭代的方式。首先定义一个结构体表示链表节点,然后创建一个辅助函数递归地访问最后一个节点,最后在主函数中通过循环调用该函数直到链表为空。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 助理函数,用于递归访问最后一个节点
void printFromRight(Node* node) {
if (node == NULL) return; // 如果节点为空,结束递归
// 打印当前节点的数据
printf("%d ", node->data);
// 递归调用,访问下一个节点
printFromRight(node->next);
}
// 右向左遍历打印链表
void printListReversed(Node* head) {
printFromRight(head);
printf("\n"); // 打印换行符结束一行
}
int main() {
// 创建示例链表
Node* head = (Node*)malloc(sizeof(Node));
head->data = 1;
head->next = (Node*)malloc(sizeof(Node));
head->next->data = 2;
head->next->next = (Node*)malloc(sizeof(Node));
head->next->next->data = 3;
head->next->next->next = NULL; // 设置链表尾部
// 调用函数开始遍历
printListReversed(head);
free(head); // 清理内存
return 0;
}
```
在这个程序中,`printListReversed`函数会从链表的最后一个节点开始,逐个打印节点的值,直到链表头节点。注意在使用完链表后要记得释放动态分配的内存。
阅读全文