c语言学生管理系统之学生信息删除

本文介绍了一个用于删除链表中特定学生信息的C语言算法。该算法通过遍历链表找到指定学号的学生,并询问用户是否确认删除。若确认,则从链表中移除该节点并释放内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void  DeleteStudentInformation(LINK head , long w)                                              //删除学生
{
    LINK p = (LINK)malloc(sizeof(NODE));
    LINK m = (LINK)malloc(sizeof(NODE));
    p = head->next ;
    m = head;
    int flag = 0;
    char choice ;
    int j = 0 ;
    while(p)
    {
        if(p->number == w)
        {
            flag = 1;
            printf("该学生信息为\n");                                                                                       //打印想删除的学生信息

            printf("此学生学号:%ld\n",p->number);
            printf("此学生姓名:%s\n",p->name);
            printf("此学生性别:%s\n",p->sex);
            printf("此学生出生年月日:%d.%d.%d   ",p->year,p->month,p->day);
            printf("此学生年龄:%d\n",p->old);
            printf("此学生数学成绩:%f\n",p->score[0]);
            printf("此学生语文成绩:%f\n",p->score[1]);
            printf("此学生英语成绩:%f\n",p->score[2]);
            printf("此学生三科平均成绩:%f",p->average);
            printf("您确定要删除吗?是,请输入‘Y’,否,请输入‘N’\n");                                 //再次确认是否删除
            fflush(stdin);
            choice = getchar();
            if(choice == 'N')
            {
                printf("您选择了否,即将返回菜单\n");
                getchar();
                break;
            }
            m->next  = p->next ;
            if(p->next == NULL)
            {
                m->next = NULL;
            }
            else
            {
                m->next = p->next ;
            }
            free(p);
            for(p= head->next ; p!=NULL; p=p->next)
            {
                ++j;
            }
            printf("删除后学生人数为%d\n",j);                                                                          //确认是否系统出错未删除学生
            break;
        }
        p = p->next ;
        m = m->next ;
    }
    if(flag == 0)                                                                                                                       //判断该学生是否存在
    {
        printf("该学生不存在\n");
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值