编写一个C++程序,实现顺序表(如数组)的至少10种基本操作,包括但不限于插入元素、删除元素、查找元素、获取长度、排序、头部和尾部元素访问、更新元素值、遍历以及清空列表,请提供完整的代码示例。
时间: 2024-10-24 11:03:58 浏览: 26
sort-name-by-read.rar_数据结构_C/C++_
在C++中,我们可以使用动态数组(vector)作为基础数据结构来实现顺序表。这里是一个简单的例子,展示了如何实现上述提到的一些基本操作:
```cpp
#include <iostream>
#include <vector>
class SequenceList {
public:
// 创建一个空列表
SequenceList() : size_(0) {}
// 获取当前列表长度
int getLength() const { return size_; }
// 插入元素到末尾
void insert(int value) {
data_.push_back(value);
size_++;
}
// 删除指定位置的元素
void removeAt(int index) {
if (index >= 0 && index < size_) {
data_[index] = data_.back();
data_.pop_back();
size_--;
}
}
// 查找元素,返回元素的位置或-1表示未找到
int find(int value) const {
for (int i = 0; i < size_; i++) {
if (data_[i] == value) {
return i;
}
}
return -1;
}
// 更新元素值
void updateElement(int index, int new_value) {
if (index >= 0 && index < size_) {
data_[index] = new_value;
}
}
// 遍历并打印元素
void traverse() const {
for (const auto& element : data_) {
std::cout << element << " ";
}
std::cout << std::endl;
}
// 清空列表
void clear() {
data_.clear();
size_ = 0;
}
private:
std::vector<int> data_;
int size_;
};
int main() {
SequenceList list;
list.insert(5);
list.insert(10);
list.insert(15);
std::cout << "Original list: ";
list.traverse();
list.removeAt(1); // 删除10
std::cout << "After removing 10: ";
list.traverse();
int index = list.find(15);
if (index != -1) {
std::cout << "Found 15 at position " << index << std::endl;
} else {
std::cout << "15 not found" << std::endl;
}
list.updateElement(0, 7); // 更新第一个元素为7
std::cout << "After updating first element to 7: ";
list.traverse();
list.clear();
std::cout << "List cleared." << std::endl;
return 0;
}
```
这个例子中,我们创建了一个名为`SequenceList`的类,它包含一个私有的`std::vector<int>`用于存储元素,以及一些公共方法来实现各种操作。
阅读全文