编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。 采用顺序表结构编程实现:两个集合的运算:交集/并集/差集。用cpp语音并写成一个程序
时间: 2024-10-09 20:01:00 浏览: 12
在C++中,我们可以使用数组或动态数组(vector)作为顺序表的数据结构来实现上述基本操作:
1. **建立顺序表(创建)**:
```cpp
#include <vector>
std::vector<int> createSequenceList(size_t capacity) {
return std::vector<int>(capacity, 0); // 初始化一个全零的序列列表
}
```
2. **修改顺序表(元素赋值)**:
```cpp
void modifySequenceList(std::vector<int>& list, size_t index, int value) {
if (index < list.size()) {
list[index] = value;
} else {
throw std::out_of_range("Index out of range");
}
}
```
3. **插入顺序表(插入元素)**:
```cpp
void insertIntoSequenceList(std::vector<int>& list, size_t index, int value) {
if (index <= list.size()) {
list.insert(list.begin() + index, value);
} else {
throw std::out_of_range("Index out of range");
}
}
```
4. **删除顺序表(移除元素)**:
```cpp
void removeFromSequenceList(std::vector<int>& list, size_t index) {
if (index < list.size()) {
list.erase(list.begin() + index);
} else {
throw std::out_of_range("Index out of range");
}
}
```
对于两个集合的运算(交集、并集、差集),可以利用`std::set`或者自定义数据结构,因为它们天然支持这些操作:
- **交集**:
```cpp
std::vector<int> intersection(const std::vector<int>& list1, const std::vector<int>& list2) {
std::set_intersection(list1.begin(), list1.end(), list2.begin(), list2.end(), std::back_inserter(result));
return result;
}
```
- **并集**:
```cpp
std::vector<int> unionSet(const std::vector<int>& list1, const std::vector<int>& list2) {
std::vector<int> result;
result.reserve(list1.size() + list2.size());
result.insert(result.end(), list1.begin(), list1.end());
result.insert(result.end(), list2.begin(), list2.end());
return result;
}
```
- **差集**:
```cpp
std::vector<int> difference(const std::vector<int>& list1, const std::vector<int>& list2) {
std::vector<int> result;
for (int i : list1) {
if (std::find(list2.begin(), list2.end(), i) == list2.end()) {
result.push_back(i);
}
}
return result;
}
```