代码实现每次向下递归直到链表为空,向上返回,依次输出当前结点的值
#include#include #include typedef int Elemtype; //单链表 typedef struct LNode { Elemtype data;//存放数据 struct LNode *next; //指向LNode的一个指针 } LNode,*LinkList; //相当于取别名,LNode代表一个节点,LinkList代表整个单链表(指向LNode的一个指针) void PrintList(LinkList L) { LinkList p; p=L->next;//找到头指针指向节点,开始遍历 printf("链表元素如下:n"); while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("n"); } //尾插法 LinkList List_TailInsert(LinkList L) { int x; L=(LinkList)malloc(sizeof(LNode)); LNode *r=L,*s; scanf("%d",&x); while(x!=9999) { s=(LNode*)malloc(sizeof(LNode)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=NULL; return L; } void R_Print(LinkList L) { if(L->next!=NULL){ R_Print(L->next); } if(L!=NULL)printf("%d--->",L->data); } void R_Ignore_Head(LinkList L) { if(L->next!=NULL) R_Print(L->next);//由于头节点无法输出data,所以传入L->next首结点开始 } int main() { LinkList L;//使用头插法 这里的L就是一个头指针 printf("请输入链表元素,输入9999表示结束n"); L=List_TailInsert(L); // 1 2 3 4 PrintList(L); printf("反向打印链表n"); R_Ignore_Head(L); return 0; }



