void Delete(LNode* head) //删除学生信息
{
LNode*p=head,*q;
int ID;
display(head);
cout<<"请输入要删除的学生学号:";
cin>>ID;
while(p!=NULL&&p->data.id!=ID)
{
q=p;
p=p->next;
}
//if(p!=NULL) //出错
if(p) //正确
{
q->next=p->next;
delete p;
cout<<"已删除\n";
display(head);
}
else cout<<"没有找到该学生信息\n";
}
但是同样的,当我把改为if(p==NULL),然后把两个分支的位置交换之后,执行第一个分支时可以,执行第二个分支就出错了,这是怎么回事?
追答// if(p) //正确
if( p!=NULL ) //出错 这样有问题???
{
q->next=p->next;
delete p;
cout<<"已删除\n";
display(head);
}
else cout<<"没有找到该学生信息\n";
就是在没有引用#include头文件的情况下,将选择部分改为:
if(p==NULL) coutnext=p->next;
delete p;
cout<<"已删除\n";
display(head);
}
当条件不满足时运行就出错误了,这种情况下条件满足时可以正常运行
出什么错???能不能说清楚些
追问运行的时候出现了这个东西
追答啥也看不清啊大侠,要么写出来出错信息,(看样子象是内存错误)
最好把你的全部代码列出来,上面的写法应该不会有问题!
程序太大传不上
本回答被网友采纳NULL是空指针,无须定义吧
追答没包含头文件 就要定义