编写c++算法,实现线性表查找locateElem(L,e),返回元素e在线性表中的位置序号,查找失败返回0。(线性表采用线式存储结构)
时间: 2024-12-02 10:14:18 浏览: 1
在C++中,你可以通过遍历线性表的方式来实现`locateElem`函数。线性表通常会采用数组或动态链表的形式。这里我们假设线性表是一个动态数组,因为数组访问效率更高。
```cpp
#include <iostream>
// 定义线性表节点
struct ListNode {
int data;
ListNode* next;
};
// 线性表查找函数
int locateElem(ListNode* L, int e) {
// 检查线性表是否为空
if (L == nullptr) {
return 0; // 如果表空,表示未找到
}
// 遍历线性表
for (size_t i = 0; L != nullptr; ++i, L = L->next) {
// 如果找到目标元素,返回其索引
if (L->data == e) {
return i;
}
}
// 查找失败,返回0
return 0;
}
// 示例:创建一个简单的线性表
void createList(ListNode** L, int size) {
*L = new ListNode{0};
ListNode* tail = *L;
for (int i = 1; i < size; ++i) {
tail->next = new ListNode{i};
tail = tail->next;
}
}
int main() {
ListNode* L = nullptr;
createList(&L, 5); // 创建一个包含[0, 1, 2, 3, 4]的线性表
int target = 3;
int position = locateElem(L, target);
if (position != 0) {
std::cout << "Element found at index " << position << std::endl;
} else {
std::cout << "Element not found" << std::endl;
}
delete L; // 清理内存
return 0;
}
```
阅读全文