Status Equal(GList A, GList B)
/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */
{
if(A==null && B==null)
return OK;
if(A->tag==0 && B->tag==0){
if(A->un.atom == B->un.atom)
return OK;
else
return ERROR;
}else if(A->tag==1 && B->tag==1){
if(Equal(A->un.ptr.hp, B->un.ptr.hp) && Equal(A->un.ptr.tp, B->un.ptr.tp))
return OK;
}else
return ERROR;
}
/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */
{
if(A==null && B==null)
return OK;
if(A->tag==0 && B->tag==0){
if(A->un.atom == B->un.atom)
return OK;
else
return ERROR;
}else if(A->tag==1 && B->tag==1){
if(Equal(A->un.ptr.hp, B->un.ptr.hp) && Equal(A->un.ptr.tp, B->un.ptr.tp))
return OK;
}else
return ERROR;
}