思路:利用栈的来实现,而递归本质上就是一个栈结构
#include <stdio.h> #include <stdlib.h> /* 剑指offer Pro5 反转链表输出 xsfelvis */ //定义链表的结构类型 typedef struct LNode { int data; struct LNode *next; } *Linklist,LNode; //打印链表函数 void PrintLinkList(Linklist p) { if(!p) return ; if(p) { PrintLinkList(p->next); } printf("%d ",p->data); } int main(int argc,char *argv[]) { int data; //开辟一个节点 Linklist L =(Linklist)malloc(sizeof(LNode)); L->next = NULL; printf("请输入一组数据,-1表示输入结束\n"); //标记指针 Linklist p ; p = L; scanf("%d",&data); ) { //尾插法建立链表 Linklist m =(Linklist)malloc(sizeof(LNode)); m->data = data; m->next = p->next; p->next = m; p = m; scanf("%d",&data); } PrintLinkList(L->next); ; }