一:题目
逆序打印单链表中的数据,假设指针指向单链表的开始结点
二:思路
1.可以使用递归方法,来进行数据打印
2.可以借助数组空间,获取长度,逆序打印数组
3.若是可以,对链表数据使用头插法,逆序排列,然后正序打印即可
三:算法实现(这里使用方法一:递归实现简单易懂)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct Node
{
int data;
struct Node*
next;
}LNode,*
LinkList;
//初始化链表,带有头结点
Status InitList(LinkList*
L)
{
LNode* p,*
q;
//初始化头结点
*L = (LinkList)malloc(
sizeof(LNode));
if (*L ==
NULL)
return ERROR;
(*L)->next =
NULL;
p = *
L;
//头插法插入数据1-10,也就是说创建后的链表数据是由10-1的
for (
int i =
0; i < MAXSIZE; i++
)
{
q = (LNode*)malloc(
sizeof(LNode));
q->data = i +
1;
q->next = p->
next;
p->next =
q;
}
return OK;
}
void InvertPrint(LinkList L)
{
if (L!=NULL)
{
InvertPrint(L->next);
printf("%d->", L->data);
}
}
int main()
{
LinkList L;
//初始化链表数据
InitList(&
L);
//打印数据
InvertPrint(L->
next);
system("pause");
return 0;
}
转载于:https://www.cnblogs.com/ssyfj/p/9567541.html