请问为什么会出现.exe停止运行那,

#define MAXM 100
#define MAXN 100
#include
#include
struct node { int lev;
char data;
struct node *child[MAXM];
struct node *parent;
};
typedef struct node NODE;
typedef struct dnode { int lev;
char data;
} DNODE;
void main()
{void levorder( NODE *t,int m) ;
NODE *lev_tree(int e,int r,DNODE y[]);
DNODE a[MAXN];
int n,m;
int i,j;
for(i=0;i<12;i++)
scanf("%d%c",&a[i].lev,&a[i].data);
NODE*g;
g=lev_tree(12,3,a);
levorder(g,3);
}

NODE lev_tree(int e,int r,DNODE y[])
{ int m,n;

int i,j;
DNODE a[MAXN];
NODE*root,*p,*q;
if (n<1) return(NULL);
root=(NODE
)malloc(sizeof(NODE));
root->lev=a[0].lev; root->data=a[0].data;
for(i=0;i root->child[i]=NULL;
root->parent=NULL;p=root;
for(i=1;i {
q=(NODE*) malloc(sizeof(NODE));
q->lev=a[i].lev; q->data=a[i].data;
for(j=0;j q->child[j]=NULL;
while (q->lev<=p->lev)

p=p->parent;
q->parent=p;
j=-1;
while (p->child[++j]!=NULL) ;
p->child[j]=q;
p=q;
}
return(root);
}

void levorder( NODE *t,int m)
{
NODE*q[100],*p;
int head,tail,i;
q[0]=t; head=0; tail=1;
while(head { p=q[head++]; printf("%c",p->data);
for(i=0;i if (p->child[i]!=NULL)
q[tail++]=p->child[i];}
}

运行出问题了啊,可能是内存溢出,越界