题目描述
在练习001的基础上,新建一个函数LocateElem(L,e)实现在L顺序表中查找e元素的位序,函数返回位序
将下列代码补充完整
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList& L){
for(int i = 0;i<MaxSize;i++)
L.data[i] = 0;
L.length = 0;
}
//练习007
//BEGIN
int LocateElem(SqList L,int e){
return 0;
}
int main(){
SqList L;
InitList(L);
//...省略一些代码,插入了几个元素
//在下面使用(LocateElem(SqList L,int e))并进行友好的交互
return 0;
}
//END
题目分析
按值查找思路:
第一步:检验请求是否合法
第二步:历遍元素,找到符合要求的元素返回位序
参考答案
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef struct {
int data[MaxSize];
int length;
}SqList;
void InitList(SqList& L) {
for (int i = 0; i < MaxSize; i++)
L.data[i] = 0;
L.length = 0;
}
//练习007
//BEGIN
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1;
}
}
return 0;
}
int main() {
SqList L;
InitList(L);
//...省略一些代码,插入了几个元素
//在下面使用(LocateElem(SqList L,int e))并进行友好的交互
int e = 5;
int position = LocateElem(&L, e);
if (position) {
printf("Element %d is located at position:%d\n", e, position);
}
else {
printf("Element %d is not found in the list.\n", e);
}
return 0;
}
//END
小白集训
LocateElem函数的函数类型一定时int类型,因为其返回值表示的时位序。
如果顺序表中存放的数据元素类型是结构类型时,判断语句不能用==,要分别判断结构体内各个分量是否相同。需要注意C语言的语法。