1.设计一个静态数组存储结构的顺序表类,要求编程实现如下任务:建立一个线性表,首先依次输人数据元素1,2,3,…,10,然后删除数据元素6,最后依次显示当前线性表中的数据元素。要求采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过10个。c++简单点
时间: 2024-09-28 08:16:01 浏览: 32
线性表的存储结构与顺序表的存储实现共4页.pdf.zip
为了创建一个简单的C++顺序表类(也称为动态数组),你可以按照以下步骤进行:
```cpp
#include <iostream>
class SequenceList {
private:
int *data; // 存储数据的指针
int size; // 当前元素个数
int capacity; // 容量
public:
// 构造函数,初始化容量为10
SequenceList() : data(new int[10]), size(0), capacity(10) {}
// 插入元素,如果已满则扩容
void insert(int 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;
if (size == capacity / 4) { // 当剩余1/4时,缩小容量
resize(capacity / 2);
}
} else {
std::cout << "Error: Index out of bounds." << std::endl;
}
}
// 显示当前线性表中的数据元素
void display() const {
for (int i = 0; i < size; ++i) {
std::cout << data[i] << " ";
}
std::cout << std::endl;
}
// 私有析构函数,防止直接删除
~SequenceList() {
delete[] data;
}
private:
// 扩容操作
void resize(int new_capacity) {
int* newData = new int[new_capacity];
for (int i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity = new_capacity;
}
};
int main() {
SequenceList list;
// 输入数据
for (int i = 1; i <= 10; ++i) {
list.insert(i);
}
// 删除元素6
list.remove(5);
// 显示当前列表
list.display();
return 0;
}
```
这个程序定义了一个`SequenceList`类,包含插入、删除和显示数据的功能。注意,这里对空间管理采用了动态扩容的方式,当达到预设的最大容量时会自动扩大两倍。在`main`函数中演示了如何操作这个列表。
阅读全文