c++,假设有一个顺序表L,其存储的所有数据元素均为非0整数,请设计一个算法,查找L中第i个元素并返回其值。
时间: 2024-10-17 11:05:09 浏览: 36
在 C++ 中,如果有一个存储了非零整数的顺序表 L,我们可以创建一个简单的线性搜索算法来查找第 i 个元素的值。以下是一个示例:
```cpp
#include <iostream>
// 顺序表模板类
template <typename T>
class SequentialList {
private:
T* elements; // 存储元素的指针
int size; // 序列长度
public:
// 构造函数,初始化空列表
SequentialList() : elements(nullptr), size(0) {}
// 添加元素到列表末尾
void add(T value) {
if (size == capacity()) resize(capacity() * 2);
elements[size++] = value;
}
// 查找指定位置的元素并返回值
T get(int index) const {
if (index >= 0 && index < size) {
return elements[index]; // 返回元素值
} else {
throw std::out_of_range("Index out of range");
}
}
// 其他方法...
private:
int capacity() const {
return sizeof(T) / sizeof(T[0]);
}
// 动态扩容...
};
int main() {
SequentialList<int> list;
list.add(1);
list.add(2);
list.add(3);
try {
int elementValue = list.get(1); // 获取第二个元素(下标从0开始)
std::cout << "Element at index 1: " << elementValue << "\n";
} catch (const std::out_of_range& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,`get()` 函数接受一个整数 `index`,检查它是否在有效范围内,然后返回对应位置的元素值。如果索引超出范围,函数会抛出 `std::out_of_range` 异常。
阅读全文