高一凡的代码,这一函数的作用不是太清楚,尤其是while语句里的参数。请高手指点。

int LocateElem(SqList L, ElemType e, Status(*compare)(ElemType, ElemType))
{  /* 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0) */
  /* 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 */
 /* 若这样的数据元素不存在,则返回值为0。算法2.6 */
ElemType* p;
int i = 1; /* i的初值为第1个元素的位序 */
p = L.elem; /* p的初值为第1个元素的存储位置 */

while(i<=L.length && !compare(*p++, e))//!compare(*p++, e)?
{
   ++i;
}

if(i <= L.length)
{
   return i;
}
else
{
   return 0;
}
}

i小于l的长度,或者指针p溢出
温馨提示:答案为网友推荐,仅供参考
相似回答