从尾部到头部打印链表,由于递归,比较简单,所以方法1,使用递归,

#include<stdio.h>
#include<stdlib.h>
struct LinkNode{
    int data;
    struct LinkNode* next;
};

struct LinkNode* createList(){
       int len  = 0 ;
       printf("input list len\n");
       scanf("%d",&len);
       printf("input list elements\n");
       struct LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode*));
       if (head == NULL ){
          printf("head is empty\n");
          return NULL;
       }
       struct LinkNode* p = head;
       for(int i=0; i<len ; i++){
           int k;
       scanf("%d",&k);
       struct LinkNode* e = (LinkNode*)malloc(sizeof(LinkNode*));
       e->data = k;
       e->next = NULL;
       p->next =  e ;
       p = p->next;

       }
       return head;
}

void printLinkList(struct LinkNode* head){
     if(head == NULL){
         return ;
     }
     printLinkList(head->next);
     printf(" %d ",head->data);
}

int main(){
    struct LinkNode* head = NULL;
    head = createList();
    printLinkList(head);
    printf("\n");

}

后续会进行优化,使用栈

01-15 21:43