严蔚敏的书,高一凡的代码,不太懂,求讲解。PriorElem(SqList L, ElemType cur_e, ElemType* pre_e)

Status PriorElem(SqList L, ElemType cur_e, ElemType* pre_e)
{ /* 初始条件:顺序线性表L已存在 */
/* 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, */
/* 否则操作失败,pre_e无定义 */
int i = 2;
ElemType* p = L.elem + 1;

while(i<=L.length && *p!=cur_e)
{
p++;
i++;
}

if(i>L.length)
{
return INFEASIBLE;
}
else
{
*pre_e = *--p;
return OK;
}
}

Status PriorElem(SqList L, ElemType cur_e, ElemType* pre_e)
{ /* 初始条件:顺序线性表L已存在 */
/* 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, */
/* 否则操作失败,pre_e无定义 */
int i = 2;
ElemType* p = L.elem + 1; //将p初始为L的第二个元素

while(i<=L.length && *p!=cur_e)//从第二个元素开始,挨个与cur_e比较,直到相等或L的最后
{
p++;
i++;
}

if(i>L.length)//没找到,则返回INFEASIBLE
{
return INFEASIBLE;
}
else//找到,返回ok
{
*pre_e = *--p;//将p的前一个元素赋值给pre_e
return OK;//返回ok
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-09
就是找到这个元素的前驱,还有后面一个函数,就是找后驱,实际使用会有这种需求的。
相似回答