建立一个顺序表,满足以下条件:1.实现顺序表初始化 2.建立 n 个元素的顺序表,输出该表中个元素的值 3.实现顺序表指定位置插入的基本操作 4.实现顺序表的指定位置删除的基本操作 5.用C++语言
时间: 2024-10-16 19:20:34 浏览: 15
shunxubiao.rar_shunxubiao_顺序表的建立
在C++中,我们可以创建一个简单的顺序表(也称为数组列表)来满足这些条件。这里是一个基础的实现:
```cpp
#include <iostream>
// 定义顺序表的结构体
template <typename T>
class SequentialList {
private:
T* data; // 存储数据的指针
int size; // 序列长度
int capacity; // 表的最大容量
public:
// 初始化函数
SequentialList(int initial_capacity = 10) : capacity(initial_capacity), size(0) {
data = new T[capacity];
}
// 析构函数,释放内存
~SequentialList() {
delete[] data;
}
// 添加元素到指定位置 (0-based)
void insert(int index, const T& value) {
if (index >= size || index < 0) {
std::cout << "Invalid index!" << std::endl;
return;
}
if (size == capacity) { // 如果已满,需要扩容
expandCapacity();
}
for (int i = size; i > index; --i) {
data[i] = data[i - 1];
}
data[index] = value;
++size;
}
// 删除元素到指定位置 (0-based)
void removeAt(int index) {
if (index >= size || index < 0) {
std::cout << "Invalid index!" << std::endl;
return;
}
for (int i = index; i < size - 1; ++i) {
data[i] = data[i + 1];
}
--size;
if (size < capacity / 4 && capacity != 0) { // 当删除较多元素时,缩小容量
shrinkCapacity();
}
}
// 输出所有元素
void display() const {
for (int i = 0; i < size; ++i) {
std::cout << "Element at position " << i << ": " << data[i] << std::endl;
}
}
private:
// 扩容函数
void expandCapacity() {
int new_capacity = capacity * 2;
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;
}
// 缩小容量
void shrinkCapacity() {
capacity /= 2;
T* newData = new T[capacity];
for (int i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
}
};
// 测试
int main() {
SequentialList<int> list;
list.insert(0, 10);
list.insert(1, 20);
list.insert(2, 30);
list.display(); // 输出初始元素
list.removeAt(1); // 删除第2个元素
list.display(); // 输出修改后的元素
return 0;
}
```
阅读全文