c++写一个顺序表,实现增删查改
时间: 2024-10-16 13:20:16 浏览: 2
在C++中,我们可以创建一个简单的线性数据结构——顺序表,也称为数组列表。下面是一个基本的顺序表实现,包含插入(Insert)、删除(Delete)、查找(Search)和修改(Modify)操作:
```cpp
template <typename T>
class SequentialList {
private:
static const size_t DEFAULT_SIZE = 10;
T* data; // 存储元素的数组
size_t size; // 当前元素的数量
size_t capacity; // 数组的最大容量
public:
SequentialList() : data(new T[DEFAULT_SIZE]), capacity(DEFAULT_SIZE), size(0) {}
~SequentialList() { delete[] data; }
// 插入元素
void insert(const T& value) {
if (size == capacity) {
resize(capacity * 2); // 如果已满,扩大容量
}
data[size++] = value;
}
// 删除元素
void remove(size_t index) {
if (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];
}
--size;
}
// 查找元素
bool search(const T& value) const {
for (size_t i = 0; i < size; ++i) {
if (data[i] == value) {
return true;
}
}
return false;
}
// 修改元素
void modify(size_t index, const T& newValue) {
if (index >= size) {
throw std::out_of_range("Index out of range");
}
data[index] = newValue;
}
// 获取元素数量
size_t get_size() const { return size; }
// 返回是否为空
bool is_empty() const { return size == 0; }
private:
void resize(size_t new_capacity) {
T* newData = new T[new_capacity];
for (size_t i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity = new_capacity;
}
};
```
在这个例子中,我们使用了模板,允许这个顺序表支持任意类型的元素。注意,这只是一个基础实现,并未处理所有边界情况,实际使用时需要考虑更多错误处理。