已知顺序表的结构定义如下:
typedef struct
{
int size, length;
int *element;
} ALIST;
说明:element
为存储数据元素的动态数组的起始地址,size
为动态数组的尺寸,length
为顺序表的长度。
请编写函数,在顺序表中查找数据元素。
函数原型
int AListFind(const ALIST *list, int element);
说明:参数 list
为指示线性表(顺序表)的指针,element
为待查找的数据元素。函数在 list
所指线性表中查找首个与 element
所指数据元素相同的数据元素,若查找成功,则函数值为线性表中找到的首个匹配的数据元素的位序,否则为0。
裁判程序
int main()
{
int i;
int x;
ALIST a;
AListCreate(&a);
AListInput(&a);
scanf("%d", &x);
i = AListFind(&a, &x);
printf("%d\n", i);
AListDestroy(&a);
return 0;
}
说明:AListCreate 函数创建顺序表,AListInput 函数输入顺序表,AListDestroy 函数销毁顺序表。
输入样例1
( 25, 36, 49, 64, 12, 58, 49, 81 )
49
结尾无空行
输出样例1
3
结尾无空行
输入样例2
( 25, 36, 49, 64, 12, 58, 49, 81 )
54
结尾无空行
输出样例2
0
结尾无空行
代码如下:
int AListFind(const ALIST *list, int element)
{
int i,*p;
for(p=list->element,i=0;i<list->length;p++,i++)
{
if(*p==element)
return i+1;
}
}