从尾部到头部打印链表,由于递归,比较简单,所以方法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");
}
后续会进行优化,使用栈