LocateElem_Sq中的compare怎么引用
在数据结构C语言版中,定义了线性表SqList,线性表如的动态分配顺序存储结构如下:
//------ 线性表的动态分配顺序存储结构--------
#define LIST_INIT_SIZE 100
//线性表存储空间的初始分配量,
//指的是长度,不是基础数据类型占内存大小
#define LISTINCREMENT 10
//线性表存储空间的分配增量
//指的是长度,不是基础数据类型占内存大小
typedef struct{
ElemType_Sq * elem;//存储空间基地址
int length; //当前长度
int listsize; //当前分配的存储容量(以sizeof(ElemType_SQ)为单位)
}SqList;
对线性表的一个操作是LocateElem_Sq
函数定义如下:
LocateElem_Sq(SqList L,ElemType_Sq e,status (*compare)(ElemType_Sq,Elemtype_Sq));
我定义了一个函数:
status equal(ElemType_Sq a,ElemType_Sq b){
if(a==b){return 1;}
else {return 0;}
}
又编写了如下主函数:
int main()
{
status (*compare)(ElemType_Sq,ElemType_Sq)=equal;
SqList SL;
ElemType_Sq a;
int i;
if(InitList_Sq(&SL))
{
printf("Init Finished,Please Input The String:");
scanf("%s",SL.elem);
getchar();
printf("String is :\"%s\"。",SL.elem);
//该部分测试结果不正确!
printf("Input a:");
scanf("%c",&a);
i=LocateElem_Sq(SL,a,*equal);
printf("\n 位序是 %d\n",i);
}
}
编译运行后,输入"hello,world"作为数组SL.Elem的内容,
然后输入'o',作为倒数第三行的参数之一
然而输出的位序是0,这是为什么呢?是作为参数的equal()的定义或者调用有问题吗?
此外,希望各位学习过数据结构的大神,给个指导,告诉我LocateElem_Sq这个函数怎么调用