int LocateElem(LinkList L,ElemType e,int (*equal)(ElemType,ElemType)) { // 初始条件: 单链表L已存在,equal()是数据元素判定函数(满足为1,否则为0) // 操作结果: 返回L中第1个与e满足关系equal()的数据元素的位序,若这样的数据元素不存在,则返回值为0
时间: 2023-06-19 20:03:14 浏览: 323
这是一个在单链表中查找指定元素的函数。它的参数包括一个单链表L、一个待查找的元素e,以及一个函数指针equal,用于判断两个元素是否相等。函数返回第一个满足equal关系的元素在链表中的位置,如果找不到则返回0。
函数实现如下:
```c
int LocateElem(LinkList L, ElemType e, int (*equal)(ElemType, ElemType)) {
int i = 1; // 记录当前位置
LinkList p = L->next; // 从第一个节点开始查找
while (p != NULL) {
if (equal(p->data, e)) { // 如果找到了满足equal关系的元素
return i; // 返回位置
}
p = p->next; // 继续向后查找
i++;
}
return 0; // 没找到,返回0
}
```
使用该函数,需要先定义一个判断两个元素是否相等的函数,例如:
```c
int equal(ElemType a, ElemType b) {
return a == b; // 直接比较两个元素是否相等
}
```
然后可以通过调用LocateElem函数来查找链表中是否包含指定元素,例如:
```c
LinkList L;
// 初始化链表L...
ElemType e = 10;
int pos = LocateElem(L, e, equal);
if (pos != 0) {
printf("找到了元素 %d,位置在 %d\n", e, pos);
} else {
printf("未找到元素 %d\n", e);
}
```
阅读全文