用c++设计顺序表类模版SqList<T>并设计主函数能够通过这个对象调用函数来实现顺序表的功能
时间: 2024-10-08 13:13:50 浏览: 6
在C++中,我们可以设计一个简单的顺序表(也称为线性表)模板类`SqList<T>`,它将元素存储在一个动态数组中,并提供一些基本的操作,如插入、删除和遍历。这里是一个基础的实现:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class SqList {
private:
int capacity;
int size;
T* data;
public:
// 构造函数,初始化容量为0
SqList() : capacity(0), size(0) { data = new T[capacity]; }
// 析构函数,释放内存
~SqList() { delete[] data; }
// 插入元素到列表末尾
void insert(T value) {
if (size == capacity) {
resize(capacity * 2); // 当满时,扩大两倍
}
data[size++] = value;
}
// 删除指定位置的元素
void remove(int index) {
if (index >= 0 && index < size) {
for (int i = index; i < size - 1; ++i) {
data[i] = data[i + 1];
}
--size;
} else {
cerr << "Error: Index out of range." << endl;
}
}
// 遍历并打印所有元素
void traverse() const {
for (int i = 0; i < size; ++i) {
cout << data[i] << " ";
}
cout << endl;
}
// 根据需要调整大小
void resize(int new_capacity) {
T* newData = new T[new_capacity];
for (int i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity = new_capacity;
}
// 获取元素数量
int get_size() const { return size; }
};
// 主函数示例
int main() {
SqList<int> list;
list.insert(5);
list.insert(10);
list.insert(15);
list.traverse(); // 输出:5 10 15
list.remove(1); // 删除第二个元素
list.traverse(); // 输出:5 15
return 0;
}