在之前程序的基础上,实现顺序表的查找(二)操作:编写顺序表按照值查找序号操作的函数。在顺序表L找第一个值为e的元素,找到后返回其逻辑序号,否则返回0。注意:由于线性表的逻辑序号从1开始,这里用0表示没有找到值为e的元素。 在算法实现时,应根据顺序表数据元素的类型ElemType编写判断两个数据元素是否相等的比较函数equals()。 编程要求 // 返回顺序表L中第1个与e满足相等关系equal()的数据元素的位序,若这样的数据元素不存在,则返回值为0。 int LocateElem(SqList L,ElemType e); 输入说明:输入顺序表的初始个数和各个元素的值,再输入要查找的数据元素的值。 输出说明:如果查找成功,第二行输出查找元素的逻辑序号;如果查找失败,则输出“查找失败!”。
时间: 2023-04-06 17:03:32 浏览: 154
数据结构中顺序表的查找
我可以回答这个问题。根据题目要求,可以编写一个函数LocateElem(SqList L,ElemType e),用于在顺序表L中查找第一个值为e的元素,并返回其逻辑序号。具体实现时,需要根据顺序表数据元素的类型ElemType编写判断两个数据元素是否相等的比较函数equals()。
以下是一个可能的实现:
```
int equals(ElemType a, ElemType b) {
// 判断两个数据元素是否相等的比较函数
return a == b;
}
int LocateElem(SqList L, ElemType e) {
int i;
for (i = 0; i < L.length; i++) {
if (equals(L.data[i], e)) {
// 找到第一个值为e的元素,返回其逻辑序号
return i + 1;
}
}
// 没有找到值为e的元素,返回0
return 0;
}
```
输入时,先输入顺序表的初始个数和各个元素的值,再输入要查找的数据元素的值。例如:
```
5 1 2 3 4 5
3
```
表示初始有5个元素,分别为1、2、3、4、5,要查找的数据元素为3。
输出时,如果查找成功,输出查找元素的逻辑序号;如果查找失败,则输出“查找失败!”。例如:
```
3
```
表示查找成功,元素3的逻辑序号为3。
完整代码如下:
阅读全文