数据结构顺序表问题 求解 !!!(C++)
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))
++i;
if(i<=L.length)
return i;
else
return 0;
}
void ListUnion(SqList &La,SqList &Lb)
{
int La_len, Lb_len,i;
ElemType e;
La_len=ListLength(La);
Lb_len=ListLength(Lb);
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb, i, e);
if (!LocateElem(La,e,equal))
ListInsert(La,++La_len,e);
}
}
在ListUnoin函数中调用了LocateElem函数,编译时发现错误指向
if (!LocateElem(La,e,equal))
说是equal未定义
请问大虾们这个应该怎么解决?
[解决办法]
那就定义equal变量并初始化它先。
[解决办法]
如果Status的定义是这样的话
typedef int Status;
那你就定义一个equal全局函数。
- C/C++ code
Status equal( ElemType a, ElemType b ){ if( a==b ) return 1; else return 0;}