1.设计一个静态数组存储结构的顺序表类,要求编程实现如下任务:建立一个线性表,首先依次输人数据元素1,2,3,…,10,然后删除数据元素6,最后依次显示当前线性表中的数据元素。要求采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过10个。c++使用template
时间: 2024-09-28 14:16:53 浏览: 61
在C++中,我们可以创建一个模板类`ArrayList`来表示静态数组顺序表。下面是一个简单的实现,包含了插入、删除和遍历的功能:
```cpp
#include <iostream>
// 定义一个模板类,用于存储固定大小的顺序表
template <typename T, int MAX_SIZE>
class ArrayList {
public:
// 构造函数,初始化所有元素为默认值
ArrayList() : elements_(std::array<T, MAX_SIZE>{}) {}
// 插入数据元素
void insert(int index, const T& value) {
if (index < 0 || index > MAX_SIZE - 1) {
std::cout << "Invalid index.\n";
return;
}
if (size_ == MAX_SIZE) {
std::cout << "Array is full.\n";
return;
}
std::copy(elements_.begin() + index, elements_.end(), elements_.begin() + index + 1);
elements_[index] = value;
size_++;
}
// 删除数据元素
void remove(const T& value) {
for (int i = 0; i < size_; ++i) {
if (elements_[i] == value) {
std::copy(elements_.begin() + i, elements_.end(), elements_.begin() + i);
elements_.pop_back();
size_--;
return;
}
}
std::cout << "Value not found in the list.\n";
}
// 显示当前线性表中的数据元素
void display() const {
for (const auto& element : elements_) {
std::cout << element << " ";
}
std::cout << "\n";
}
private:
std::array<T, MAX_SIZE> elements_;
int size_ = 0; // 当前元素的数量
};
int main() {
// 创建ArrayList实例并输入数据
ArrayList<int, 10> list;
for (int i = 1; i <= 10; ++i) {
list.insert(i, i);
}
// 删除数据元素6
list.remove(6);
// 显示列表内容
list.display();
return 0;
}
```
在这个例子中,我们首先创建了一个包含10个整数元素的顺序表,并按照题目要求依次插入数字1到10。然后删除元素6,最后打印出剩余的元素。
阅读全文