输入一个线性表,如原表1-1-2-3-3-4-5-6-7-7-7-8,处理后1-2-3-4-5-6-7-8请写出算法将该表中的重复数据删除。C++
时间: 2024-10-12 09:06:22 浏览: 3
在C++中,可以使用集合(如`std::set`)的数据结构特性来删除线性表中的重复元素,因为`std::set`不允许有重复的元素。下面是一个简单的算法示例:
```cpp
#include <iostream>
#include <vector>
#include <set>
// 函数模板用于删除重复元素并保持顺序
template<typename T>
void removeDuplicates(std::vector<T>& nums) {
std::set<T> uniqueSet;
for (const auto& num : nums) {
if (uniqueSet.insert(num).second) { // 如果插入成功,说明是新元素
// 将元素添加回原始向量
nums.push_back(num);
}
}
}
int main() {
std::vector<int> input = {1, 1, 2, 3, 3, 4, 5, 6, 7, 7, 7, 8};
removeDuplicates(input);
// 打印处理后的结果
for (const auto& num : input) {
std::cout << num << " ";
}
return 0;
}
```
这个程序首先创建了一个空的`std::set`,然后遍历输入的线性表。如果尝试插入一个值时,`insert`函数会返回一个指示是否成功的布尔值(`true`表示新元素)。如果是新元素,则将其添加到原始向量`nums`中。最后,处理后的向量将只包含唯一的元素。