一段c代码的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 11:41:25
void del(LinkList *&L,ElemType min,ElemType max)
{
LinkList *p=L,*q;
while(p!=NULL)
{
q=p->next;
if(q->data>=min&&q->data<=max&&q!=NULL)
{
p->next=q->next;
free(q);
}
p=p->next;
}
}

目的是为了删除单链表中data值在min到max之间的结点。

但是运行时出现linklist.exe 中的 0x00321e48 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
应该是非法访问内存了。
哪一步出了问题?

void del(LinkList *&L,ElemType min,ElemType max)
{
LinkList *p=L,*q;
while(p!=NULL)
{
q=p->next;
if(q!=NULL&&q->data>=min&&q->data<=max) //先判断q!=NULL
{
p->next=q->next;
free(q);
}
p=p->next;
}
}

LinkList *&L这个是做什么用的?*和&不能一起用的啊,改成*L