c语言一小段代码怎么改哪里错了

while(strcmp(qid,p1->qid)!=NULL&&p1->next!=NULL)错哪里了?怎么改?

while(strcmp(qid,p1->qid)!=0&&p1->next!=NULL)

没啥错啊,为什麽认为这句有错呢?
唯一可能有问题的地方是,你没有判断p1是否为空。如果你在while循环内部修改p1的指向的话,while的第一部分应该是p1 != NULL
while(p1 != NULL && strcmp(qid,p1->qid)!=NULL && p1->next!=NULL)