这个模块无法正确实现,求解

img

img


这个模块无法正确实现,求解,这是del模块是用链表实现,但是总是会有问题,我是用vs2022写的,求解

这个 stu 结构体是咋样的?代码里几个问题,如果判断 head == NULL 条件成立,链表为空,此时应 return; 返回上级函数。后面删除里,prev应是前置指针,所以prev = temp; temp = temp->next; 两句互换位置才行。
整体修改如下,供参考:

void del()
{
    int  num;
    if (head == NULL) {
        printf("无学生信息,链表为空!\n");
        return;   
    }
    printf("请输入需要删除的学生学号:\n");
    scanf_s("%d", &num);
    stu* temp = head;
    stu* prev = temp;
    while (temp != NULL) {
        if (temp->id == num) {
            if (prev == head) 
                head = head->next;
            else 
                prev->next = temp->next;
            free(temp);
            printf("学生信息删除成功!\n");
            return;
        }
        else {
            prev = temp;
            temp = temp->next;
        }
    }
    printf("未找到该学生!\n");
}