将一个单链表的内容逆序输出,考虑到当一个链表的元素打印之前将该元素的前一个元素打印,运用这个思路可以使用递归来实现该功能,(不过该方法仍然存在,问题,当链表过长会导致栈溢出问题)代码如下:
- </pre><pre name="code" class="cpp">/*
- * File: main.c
- * Author: Kyle
- *
- * Created on 2015年9月7日, 下午2:34
- */
- #include <stdio.h>
- #include <stdlib.h>
- typedef int Item; //定义数据项类型
- /*
- *单链表,结构体
- */
- typedef struct node {
- Item item; //数据域
- struct node* next; //链域
- } Node;
- void Add2Tail(Node** pHead, int value) { //链表末尾添加一个元素
- Node *p = (Node *) malloc(sizeof (Node));
- p->item = value;
- p->next = NULL;
- if (*pHead == NULL) {
- *pHead = p;
- } else {
- Node *temp = *pHead;
- while (temp->next != NULL) {
- temp = temp->next;
- }
- temp->next = p;
- }
- }
- void Reversing_Output_List(Node* list) { //递归方法,逆序输出一个链表内容
- if (list != NULL) {
- if (list->next != NULL) {
- Reversing_Output_List(list->next);
- }
- printf("%d,", list->item);
- }
- }
- int main() {
- /**
- * 2.面试题5 逆序输出一个链表内容
- */
- Node *p = NULL;
- Add2Tail(&p, 4);
- Add2Tail(&p, 56);
- Add2Tail(&p, 6);
- Add2Tail(&p, 7);
- Add2Tail(&p, 9);
- Add2Tail(&p, 3);
- Add2Tail(&p, 1);
- Add2Tail(&p, 66);
- Add2Tail(&p, 24);
- Reversing_Output_List(p);
- return (EXIT_SUCCESS);
- }
本文介绍了一种利用递归方法实现单链表内容逆序输出的算法,并提供了一个具体的C语言实现示例。该方法通过先递归访问到链表的最后一个节点,再返回时依次输出各节点的数据,从而达到逆序输出的效果。
7845

被折叠的 条评论
为什么被折叠?



