应该是删除链表节点的功能,但你代码不全,不好注释,下面是我简单的注释了一下你看看有问题了在问吧
// 判断qid和p1->qid是不是相等,如果不相等而且p1->next!=NULL成立时候继续循环
// 否则跳出循环,这里再p1链表中找寻数据为qid的节点的
while(strcmp(qid,p1->qid )!=0&&p1->next!=NULL)
{
p2=p1;
p1=p1->next ;
}
// 这里判断和上面while里的的判断一样,只不过是相等了执行if下面的语句
if(strcmp(qid,p1->qid )==0)
{
// 判断该节点有没有成员,如果头结点的next都为空的话,肯定没有可用节点了
// 也就不需要删除东西了
if(head->next==NULL)
{
// 释放头结点占用的内存
free(head);
head=NULL;
}
else if(head==p1)
{
//
head=p1->next;
free(p1);
}
else
{
p2->next=p1->next;
free(p1);
}
printf("\n删除完毕;");
}
你这个不完整吧。。。前面应该还有结构体。。。