这里的if(p2!=NULL)没看懂,如果没有搜索到指定的节点,p2不是等于NULL吗?

int delStudent()                             //修改数据之删除记录
    {
        struct Student *p1,*p2,*head;
        char str_num[20];
        printf("请输入你要删除的学号\n");
        scanf("%s",str_num);
        p1=ReadData;
        p2=p1->next;
        head=p1;
        while(p2!=NULL)
        {
            if(strcmp(p1->num,str_num)==0)
            {
                WriteData_wb(p2);
            }
            else if(strcmp(p2->num,str_num)==0)
            {
                p1->next=p2->next;
                WriteData_wb(head);
            
            }
            p2=p2->next;
            p1=p1->next;
            
            
        }
        if(p2!=NULL)
            printf("数据库里没有储存你要删除的数据\n");
            printf("\n\n");
            return 0;
   
    }

 

你这个代码哪里来的,找到删除之后不应该停止找下一个吗?上面的都有问题了,while执行之后P2==null的