(1) 初始化顺序表。 (2)在顺序表的第 i 个位置插入元素。 (3)删除顺序表的第 i 个元素。 (4)输出顺序表。 (5)判断顺序表是否为空。 (6)判断顺序表是否为满。 (7)求顺序表第 i 个元素的值。 (8)查找值为 x 的元素
时间: 2024-09-29 11:03:05 浏览: 24
在C++中,我们可以使用`std::vector`来模拟简单的顺序表(数组),因为它提供了动态大小的能力,便于进行上述操作。这里我会介绍如何使用`std::vector`来实现这些功能:
1. **初始化顺序表**:
使用`std::vector`时,可以直接创建并初始化一个空列表,也可以指定初始容量:
```cpp
std::vector<int> list; // 创建一个空列表
std::vector<int> list(10); // 创建一个包含10个默认值(0)的列表
```
2. **在第 i 个位置插入元素**:
```cpp
void insert(int value, size_t index) {
list.insert(list.begin() + index, value);
}
```
这里`list.begin()`获取首地址,`index`加上`begin()`后得到插入位置。
3. **删除第 i 个元素**:
```cpp
void remove(size_t index) {
if (index < list.size()) {
list.erase(list.begin() + index);
} else {
throw std::out_of_range("Index out of range");
}
}
```
`erase`方法从指定位置开始移除元素,如果索引超出范围,抛出异常。
4. **输出顺序表**:
```cpp
void print_list() {
for (const auto& elem : list) {
std::cout << elem << " ";
}
std::cout << "\n";
}
```
使用范围for遍历并打印元素。
5. **判断顺序表是否为空**:
```cpp
bool is_empty() const {
return list.empty();
}
```
6. **判断顺序表是否为满**:
对于`std::vector`而言,没有特定的概念表示“满”。但如果你有一个固定的大小限制,你可以用`size()`与最大容量比较:
```cpp
bool is_full(size_t max_size) const {
return list.size() == max_size;
}
```
7. **求第 i 个元素的值**:
```cpp
int get_element(size_t index) const {
if (index < list.size()) {
return list[index];
} else {
throw std::out_of_range("Index out of range");
}
}
```
8. **查找值为 x 的元素**:
```cpp
int find_value(int x) const {
for (size_t i = 0; i < list.size(); ++i) {
if (list[i] == x) {
return i;
}
}
return -1; // 如果没找到返回-1 或者抛异常
}
```
阅读全文