我感觉我的del函数没有问题,但是在我调式的时候,运行del函数和输出函数时,他会直接停止运行,然后我设置断点进行调试,发现他说是分割故障。
/*删除链表中的节点*/
void del(struct List* L,char ch[])
{
struct List* p = L->next;
struct List* q;
if(!sousuo(L->next,ch)) cout<<"该学生信息不存在,无法删除!"<<endl;
while(p!=NULL&&strcmp(p->xuehao,ch)!=0)
{
q = p;
p = p->next;
}
if(p!=NULL&&strcmp(p->xuehao,ch)==0)
{
q->next = p->next;
free(p);
cout<<endl<<"删除成功"<<endl;
}
}
void del(struct List* &L,char ch[])
{
struct List* p = L->next;
struct List* q;
if(!sousuo(L->next,ch)) cout<<"该学生信息不存在,无法删除!"<<endl;
if(strcmp(p->xuehao,ch)==0)
{
L->next = p->next;
delete p;
cout<<endl<<"删除成功"<<endl;
}
else
{
while(p!=NULL&&strcmp(p->xuehao,ch)!=0)
{
q = p;
p = p->next;
}
if(p!=NULL&&strcmp(p->xuehao,ch)==0)
{
q->next = p->next;
delete p;
cout<<endl<<"删除成功"<<endl;
}
}
}