写一个查找方法,实现返回线性表L中第一个与e满足关系compare()的数据元素的位序。
时间: 2023-05-11 18:01:54 浏览: 140
以下是一个简单的查找方法,实现返回线性表L中第一个与e满足关系compare()的数据元素的位序:
int find_first_element(List L, int e, int (*compare)(int, int)) {
int i;
for (i = 0; i < L.length; i++) {
if (compare(L.data[i], e)) {
return i + 1;
}
}
return 0;
}
其中,List是线性表的结构体,包含数据元素和长度信息;e是要查找的元素;compare是一个函数指针,用于比较两个元素是否满足某种关系。函数返回值为第一个满足条件的元素的位序,如果找不到则返回0。
相关问题
在顺序线性表中查找第一个与e满足compare()的元素的位序
好的,针对您的问题,我可以给出以下算法:
1. 初始化计数器i为1,表示从顺序线性表的第一个元素开始查找。
2. 若i大于表长,则查找失败,返回0。
3. 否则,取第i个元素与e进行比较,若compare(e, a[i])为真,则查找成功,返回i。
4. 否则,i加1,重复步骤3。
以下是该算法的C++代码实现:
```c++
int search(SeqList L, ElemType e, int (*compare)(ElemType, ElemType)) {
int i = 1;
while (i <= L.length && !compare(e, L.data[i])) {
i++;
}
if (i <= L.length) {
return i;
} else {
return 0;
}
}
```
其中,`SeqList`表示顺序线性表的类型,`ElemType`表示元素的类型,`compare`是元素比较函数,返回值为`true`或`false`。
阅读全文