//问题:使用递归将链表中的元素逆序输出
//链表递归逆序输出
#include "stdio.h"
#include<stdlib.h>
typedef struct Node{ //结构体
int data;
Node *next;
}Node;
void init(Node *&p){ //初始化
p->next = NULL;
}
void listCreate(Node *&p,int n){ //参数:头节点,数据
Node *q = (Node *)malloc(sizeof(Node));
//****头插法建立(插入)链表*********(后进先出)
q->data = n;
q->next = p->next;
p->next = q;
//****************
}
void Traversal(Node *&p){ //遍历
Node *q = p->next;
while (q != NULL)
{
printf("%d ",q->data);
q = q->next;
}
}
//***********核心函数**********************************
Node *back(Node *p){
if(p!=NULL){
back(p->next);//往下递
printf("%d ",p->data); //归的同时输出内容
return p; //归
}
}
Node tmp(Node *h){ //back函数如果传进去的是头节点,那么在回归到头结点时也会输出头节点data域的内容,为了让它不输出,所以写个函数让传进去的是第一个节点
Node *q = h->next;
back(q);
}
//***************************
int main(){
Node *head = (Node *)malloc(sizeof(Node));
init(head);
for(int i=0;i<5;i++){
listCreate(head,i);
}
//Traversal(head);
change(head);
getchar();
return 0;
}