这么写有什么不对吗,为什么它运行不了?有些不太理解,希望有人能具体解惑一下,如果可以的话,请讲的简单易懂一点。
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int Data;
struct Node *Next;
}node,*List;
List Read();
void Print( List L );
List Insert( List L, int X );
int main()
{
List L;
int X;
L = Read();
scanf("%d", &X);
L = Insert(L, X);
Print(L);
return 0;
}
List Insert( List L, int X )
{
List pr;
pr=(List)malloc(sizeof(struct Node));
if(X<=L->Data){
pr->Next=L;
pr->Data=X;
return pr;
}else{
if(L->Next==NULL){
L->Next=pr;
pr->Data=X;
pr->Next=NULL;
}else{
L->Next=Insert(L->Next,X);
}
}
return L;
}
List Read(){
List L,h;
L=h=(List)malloc(sizeof(struct Node));
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
L=(List)malloc(sizeof(struct Node));
scanf("%d",L->Data);
L=L->Next;
}
L->Next=NULL;
L=h->Next;
free(h);
h=L;
return h;
}
void Print( List L){
while(L->Next!=NULL){
printf("%d",L->Data);
L=L->Next;
}
}