数据结构指针出现问题

else
{ int j=0;
while(p->number!=num&&p!=NULL)
{
p=p->next;
++j;
}
student *p=q->front;
while(j>=2)
{
p=p->next;
--j;
}
t=p->next;
p->next=t->next;
delete t;
printf("\n\t\t学号为%d的同学已删除\n",num);
}
}
这里面显示p->next=t->next有问题,程序中断了,请问哪里需要改

显示p->next=t->next有问题
———提示的问题或者错误内容是啥?

t指向p的后继结点,如果p本身指向空,再指向空的后继就会报错,也就是它判定成为了 NULL->next,你不能对一个空指针的后继再进行访问

t的定义有问题吧,你看你的那句t=p->next;
p->next=t->next;

这里换个顺序


while(p != NULL && p->number!=num)
{
p=p->next;
++j;
}