编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemTypew为char),并在此基础上设计一个主程序,完成如下功能
时间: 2024-09-28 14:04:52 浏览: 221
编写一个名为`sqlist.cpp`的程序,首先我们需要定义一个顺序表结构,包含指向下一个元素的指针和一个大小。我们将使用`std::vector<char>`作为底层容器来实现顺序表。下面是关键的部分:
```cpp
#include <iostream>
#include <vector>
// 定义顺序表模板类
template <typename ElemType>
class SequenceList {
public:
SequenceList(size_t capacity = 0) : elements(capacity), size(0) {}
// 添加元素到表尾
void push_back(ElemType elem) {
if (size == elements.size()) {
resize(size * 2); // 当满时,扩大一倍容量
}
elements[size++] = elem;
}
// 删除指定索引处的元素
void remove_at(size_t index) {
if (index < size && index < elements.size()) {
for (size_t i = index; i < size - 1; ++i) {
elements[i] = elements[i + 1];
}
--size;
} else {
std::cerr << "Index out of range!" << std::endl;
}
}
// 查找元素
bool find(const char target) const {
for (size_t i = 0; i < size; ++i) {
if (elements[i] == target) {
return true;
}
}
return false;
}
private:
std::vector<ElemType> elements; // 存储元素
size_t size; // 表的实际元素数量
// 扩大容量
void resize(size_t new_capacity) {
elements.resize(new_capacity);
}
};
int main() {
SequenceList<char> myList;
// 使用push_back添加元素
myList.push_back('A');
myList.push_back('B');
myList.push_back('C');
// 打印所有元素
std::cout << "Elements in the list: ";
for (const auto& elem : myList.elements) {
std::cout << elem << ' ';
}
std::cout << '\n';
// 删除某个元素(这里以0位置为例)
myList.remove_at(0);
// 检查元素是否存在
if (myList.find('B')) {
std::cout << "'B' found in the list.\n";
} else {
std::cout << "'B' not found in the list.\n";
}
return 0;
}
```
这个程序实现了顺序表的基本操作:添加、删除元素和查找元素。主程序创建了一个`SequenceList<char>`实例,执行了一些基本操作,并检查了结果。
阅读全文