编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的 元素类型ElemType为char),并在此基础上设计一个主程序,完成如下功能: 初始化顺序表L
时间: 2024-09-19 19:04:43 浏览: 258
SqList.cpp
编写`sqlist.cpp`程序,首先需要包含一些必要的头文件,例如`iostream`用于输入输出,`vector`作为顺序表的数据结构。这里我们使用C++的`std::vector<char>`来实现顺序表。下面是一个简单的顺序列表实现,包含了初始化、插入、删除、搜索、遍历等基本操作,以及整体建表算法。
```cpp
#include <iostream>
#include <vector>
// 顺序表定义
template<typename T>
class SequenceList {
public:
SequenceList(size_t capacity = 0) : data(capacity), size_(0) {}
// 插入元素
void insert(int index, const T& value) {
if (index >= size_) {
resize(size_ + 1);
}
std::copy(data.begin() + index, data.end(), data.begin() + index + 1);
data[index] = value;
size_++;
}
// 删除元素
void remove(int index) {
if (index < 0 || index >= size_) {
throw std::out_of_range("Index out of range");
}
for (size_t i = index; i < size_ - 1; ++i) {
data[i] = data[i + 1];
}
data[size_ - 1] = T(); // 或者清空位置
size_--;
}
// 搜索元素
bool search(const T& value) const {
for (size_t i = 0; i < size_; ++i) {
if (data[i] == value) {
return true;
}
}
return false;
}
// 遍历打印
void print() const {
for (const auto& elem : data) {
std::cout << elem << ' ';
}
std::cout << '\n';
}
private:
std::vector<T> data;
size_t size_;
// 整体建表算法省略,因为这通常是在构造函数中一次性填充的
};
int main() {
// 初始化顺序表
SequenceList<char> list;
list.insert(0, 'a');
list.insert(1, 'b');
list.insert(2, 'c');
// 打印初始序列
std::cout << "Initial sequence: ";
list.print();
// 操作演示
list.remove(1); // 删除 'b'
if (list.search('c')) {
std::cout << "'c' found in the list.\n";
} else {
std::cout << "'c' not found in the list.\n";
}
// 更新后的打印
std::cout << "After removing 'b': ";
list.print();
return 0;
}
```
在这个例子中,`SequenceList`模板类实现了顺序表的基本操作。在`main`函数里,我们创建了一个`SequenceList<char>`实例,进行了插入、删除和搜索操作,并展示了其结果。
阅读全文