释放指针指向空间出错,求指教
程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct node{ int order; int bianhao; struct node *link; }Node,*L; main() { int B[]={3,1,7,2,4,8,4}; L h, p, q; int i,m=4,n=7; p=h=(L)malloc(sizeof(L)); h->order=1; h->bianhao=B[0]; h->link=NULL; p=h; for(i=1;i<n;i++) { p=p->link=(L)malloc(sizeof(L)); p->order=i+1; p->bianhao=B[i]; p->link=NULL; } p->link=h; while(n--) { q=p; for(i=0;i<m;i++) { p=q; q=p->link; } p->link=q->link; m=q->bianhao; printf("%4d",q->order); //free(q); /*这一行,注释掉没问题,不注释掉就会报错,这是为什么?*/ } }
这段代码是用来演示约瑟夫环的。