之前总是忘记,做个记录
//使用二级指针代替,这样可以修改地址
void Delete(struct student** head, int num)
{
struct student* p, * q;
p = *head;
if (*head == null)
{
printf(" ########## 友情提示 ,没有可删除的学生!############ \n\n");
}
//查找要删除的节点
while (p->stuid != num && p->next != null)
{
q = p;
p = p->next;
}
//表示找到了这个学号
if (p->stuid == num)
{
//如果要删除的是头节点
if (p == *head)
{
//释放原来的节点的内存
/*free(*head);
*head = null;*/
//指向新的节点
*head = p->next;
}
else
{
q->next = p->next;
}
printf(" ############# 被 删 除 学 生 的 信 息#############\n\n");
printf("--------------------------------------------------------------------------------\n");
printf(" 学号 姓名 性别 英语 高数 数据结构 总分 平均分 \n\n");
printf(" %d %s %s %6.1f %6.1f %6.1f %6.1f %6.1f\n", p->stuid, p->stuname, p->stusex, p->english, p->math, p->database, p->sum, p->average);
printf("--------------------------------------------------------------------------------\n");
free(p);
}
else
{
printf(" ######### 友情提示!找不到该用户的资料!##########\n\n");
}
}