实现一个顺序存储的线性表,实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能
时间: 2024-10-21 20:05:04 浏览: 57
顺序存储的线性表是一种基础的数据结构,它通过数组的方式实现元素的存储。在C++中,我们可以创建一个`SequenceList`类,包含私有成员变量(如数组和长度),以及公有的插入(`SL_InsAt`)、删除(`SL_DelAt`)和查找(`SL_DelValue`)操作。
```cpp
class SequenceList {
private:
int* data; // 存储数据的数组
int size; // 当前列表大小
int capacity; // 容量
public:
// 构造函数,初始化容量
SequenceList(int cap) : data(new int[cap]), size(0), capacity(cap) {}
// 插入操作,将元素插入到指定位置
void SL_InsAt(int index, int value) {
if (index < 0 || index > size) {
throw std::out_of_range("Index out of range");
}
if (size == capacity) { // 如果已满,扩大容量
capacity *= 2;
data = new int[capacity];
}
for (int i = size; i > index; i--) {
data[i] = data[i - 1];
}
data[index] = value;
size++;
}
// 删除操作,删除指定索引处的元素
void SL_DelAt(int index) {
if (index < 0 || index >= size) {
throw std::out_of_range("Index out of range");
}
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
delete[] data[size]; // 释放最后一个元素的空间
size--;
}
// 根据值删除元素,返回第一个匹配的位置
int SL_DelValue(int value) {
for (int i = 0; i < size; i++) {
if (data[i] == value) {
SL_DelAt(i);
return i; // 返回找到的第一个匹配位置
}
}
return -1; // 如果未找到,返回-1
}
// 其他辅助操作,如获取元素、遍历等...
};
```
阅读全文