用c++写一个函数,查找顺序表中的最大值,并将最大值移动到顺序表的末尾,其余元素线性关系不变
时间: 2024-10-18 14:13:13 浏览: 27
如何在C++中建立一个顺序表
5星 · 资源好评率100%
在C++中,你可以定义一个`findMaxAndMove`函数,它接受一个`List<int>`类型的引用作为输入,其中`List<int>`是一个简单的整数线性存储结构。下面是一个示例实现:
```cpp
#include <iostream>
#include <vector>
// 定义一个简单的线性列表模板类,用于演示
template <typename T>
class List {
public:
void add(int value) { data.push_back(value); }
int get(size_t index) const { return data[index]; }
private:
std::vector<T> data;
};
// 函数来找到最大值并将其移到末尾
template <typename T>
void findMaxAndMove(List<T>& nums) {
if (nums.isEmpty()) {
std::cout << "The list is empty.\n";
return;
}
// 找到最大值的索引
size_t max_index = 0;
for (size_t i = 1; i < nums.getSize(); ++i) {
if (nums.get(i) > nums.get(max_index)) {
max_index = i;
}
}
// 将最大值移到末尾
T temp = nums.get(max_index);
nums.data.erase(nums.data.begin() + max_index);
nums.data.push_back(temp);
std::cout << "After moving the maximum value to the end: ";
for (const auto& num : nums.data) {
std::cout << num << " ";
}
std::cout << "\n";
}
int main() {
List<int> numbers;
numbers.add(5);
numbers.add(3);
numbers.add(8);
numbers.add(1);
findMaxAndMove(numbers);
return 0;
}
```
在这个例子中,我们首先检查列表是否为空。然后遍历列表找到最大值的索引,接着将该值从其当前位置移除并添加到列表的末尾。最后,我们在主函数中测试了这个功能。
阅读全文