高分奖赏C++高手来

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:32:06
请高手解释下下面程序 最好详细点 谢谢 好的加分不是问题
int cangku::Find(int ID,TV **p1,TV **p2)
{
*p1=GL;
*p2=GL->next;
while(*p1)
{
if((*p1)->num==ID)
break;
else
{
*p2=*p1;
*p1=(*p1)->next;
}
}
return *p1?1:0;
}

p1,p2是指向指针的指针,*p1,*p2指向的是一个地址,这个地址存储的是TV对象(的值)。

这个程序的解释如下:
*p1=GL;
*p2=GL->next;
这两句初始化变量的值,PS:这是一个循链查找过程

while(*p1)
循环条件,只有当p1不为NULL时才继续下面的循环体
{
if((*p1)->num==ID)
如果这个结点的num成员的值等于ID
break;
那么跳出循环
else
在这个结点没有找到
{
*p2=*p1;
将p1存储在p2中
*p1=(*p1)->next;
p1指向下一个结点
}
}
return *p1?1:0;
?:操作符,如果*p1为非零值返回1,否则返回0