建立顺序表,基本操作包括:建立并初始化顺序表、输出顺序表、判断是 否为空、取表中第i个元素、查找、插入和删除。并在主函数中完成对各种函数 的测试。用c++写出
时间: 2024-09-20 12:05:01 浏览: 53
在C++中,我们可以创建一个简单的顺序表(数组或链表)结构来实现这些基本操作。这里我们选择使用动态数组作为实现顺序表的例子,因为数组更容易直观地表示连续的元素。
```cpp
#include <iostream>
// 定义顺序表模板
template <typename T>
class SequenceList {
private:
int capacity;
T* elements; // 存储数据的指针
public:
// 构造函数,初始化列表为空
SequenceList(int size = 0) : capacity(size), elements(new T[capacity]) {}
// 插入元素
void insert(int index, const T& value) {
if (index >= 0 && index < capacity) {
std::copy(elements + index, elements + capacity, elements + index + 1);
elements[index] = value;
} else {
throw std::out_of_range("Index out of range");
}
}
// 删除元素
void remove(int index) {
if (index >= 0 && index < capacity) {
std::memmove(elements + index, elements + index + 1, sizeof(T) * (capacity - index - 1));
} else {
throw std::out_of_range("Index out of range");
}
}
// 其他操作...
bool isEmpty() const { return capacity == 0; }
T& operator[](int i) { return elements[i]; }
const T& operator[](int i) const { return elements[i]; }
// 输出
void print() const {
for (int i = 0; i < capacity; ++i) {
std::cout << elements[i] << " ";
}
std::cout << std::endl;
}
~SequenceList() { delete[] elements; }
};
// 主函数测试
int main() {
SequenceList<int> list(5); // 创建一个包含5个元素的整数列表
// 测试插入和删除
list.insert(0, 10);
list.remove(2);
// 判断是否为空
if (list.isEmpty()) {
std::cout << "List is empty.\n";
} else {
std::cout << "List contains: ";
list.print(); // 打印内容
}
// 查找元素
try {
std::cout << "Element at index 3: " << list[3] << "\n";
} catch (const std::out_of_range& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,`SequenceList`模板类包含了创建、插入、删除、查找以及打印操作。注意,为了保持简单,这个示例假设所有操作都适用于数组长度范围内,实际应用中可能需要更复杂的边界检查和错误处理。
阅读全文