c语言基础,请帮忙看一下这段小程序!!!

void Creat(LinkList &L,int term){
L = (LinkList)malloc(sizeof(LNode)); //生成结点的头指针;
L->next = NULL;
LinkList q=L;
ElemType e;
for(int i = 1;i<=term;i++){ //遍历term项的
LinkList p = (LinkList)malloc(sizeof(LNode));
e=p->data;
scanf("%f %d",&e.coef,&e.expn);
p->next=q->next;q->next=p;
q=q->next;free(p);

}
}

这个建立一个链表的程序不知道怎么回事,编译通过,但是显示出来时一直在显示的

void Creat(LinkList *L,int term)
{
     L = (LinkList*)malloc(sizeof(LNode));  //生成结点的头指针; 
     L->next = NULL;              
     LinkList *q=L;
     ElemType *e;
     for(int i = 1;i<=term;i++){                        //遍历term项的 
          LinkList *p = (LinkList *)malloc(sizeof(LNode));
          e=&p->data;
          scanf("%f %d",&e->coef,&e->expn);
          p->next=NULL;
          q->next=p;
          q=q->next;
          //free(p); 
     }
}

注意malloc返回的地址,需要使用指针的~

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-25
显示出来时一直在显示的是什么意思?追问

无线循环的意思

追答

能把代码贴全吗

第2个回答  2014-09-25
自己好好看看这几句,画个图,将逻辑理顺了!

p->next=q->next;
q->next=p; //p插入到了q后
q=q->next; //q指向p
free(p); //又将p释放!!!
第3个回答  2014-09-25
会不会是free(p)的原因
相似回答