顺序表模板类c++示例代码
时间: 2024-06-16 14:01:37 浏览: 111
在C++中,顺序表(也称为线性表)是一种基础的数据结构,它按照特定的顺序存储元素。这里是一个简单的顺序表模板类(用数组实现)的示例代码:
```cpp
template <typename T>
class SequentialList {
public:
// 构造函数,初始化列表长度为0
SequentialList() : size(0), capacity(0) {}
// 插入元素到列表末尾
void push_back(const T& value) {
if (size == capacity) {
// 如果已满,扩大容量
resize(capacity * 2);
}
data[size++] = value;
}
// 删除并返回末尾元素
T pop_back() {
if (size == 0) {
throw std::runtime_error("List is empty");
}
T value = data[size - 1];
data[size - 1] = data[capacity - 1]; // 将最后一个元素移动到最后
size--;
if (size < capacity / 4) { // 当列表长度小于原来容量的1/4时,缩小容量
resize(capacity / 2);
}
return value;
}
// 获取指定索引的元素
const T& get(int index) const {
if (index < 0 || index >= size) {
throw std::out_of_range("Index out of range");
}
return data[index];
}
private:
T* data; // 存储元素的数组
int size; // 当前元素数量
int capacity; // 数组的当前容量
// 扩大数组容量
void resize(int new_capacity) {
T* new_data = new T[new_capacity];
for (int i = 0; i < size; i++) {
new_data[i] = data[i];
}
delete[] data;
data = new_data;
capacity = new_capacity;
}
};
```
阅读全文