使用递归将链表中的元素逆序输出

//问题:使用递归将链表中的元素逆序输出
//链表递归逆序输出
#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;
}
posted @ 2020-11-09 20:36  封不烦  阅读(450)  评论(0编辑  收藏  举报