c++代码表述将顺序表中最大值移到末尾
时间: 2024-10-14 20:05:46 浏览: 33
如何在C++中建立一个顺序表
5星 · 资源好评率100%
在C++中,你可以使用迭代的方式来实现这个功能,即遍历顺序表(数组),同时维护当前找到的最大值。以下是简单的步骤:
```cpp
#include <iostream>
// 定义一个简单的一维整型顺序表结构
template<typename T>
class SequentialList {
private:
T* data;
int size;
public:
SequentialList(int capacity) : data(new T[capacity]), size(0) {}
// 添加元素
void add(T value) {
if (size == data->size)
resize(size * 2); // 当满时,扩大容量
data[size++] = value;
}
// 找到并移动最大值到末尾
void moveMaxToEnd() {
if (size <= 1)
return; // 如果只有一个元素或者为空,无需操作
int max_index = 0;
for (int i = 1; i < size; ++i) {
if (data[i] > data[max_index])
max_index = i;
}
std::swap(data[max_index], data[size - 1]); // 移动最大值到末尾
}
// 其他辅助函数...
~SequentialList() { delete[] data; } // 释放内存
};
int main() {
SequentialList<int> list(5);
list.add(10);
list.add(20);
list.add(15);
list.add(30);
std::cout << "Original List: ";
for (int i : list.data)
std::cout << i << " ";
list.moveMaxToEnd();
std::cout << "\nAfter moving max to end: ";
for (int i : list.data)
std::cout << i << " ";
return 0;
}
```
在这个例子中,`moveMaxToEnd` 函数首先找出列表中的最大值索引,然后通过 `std::swap` 将它与最后一个元素交换位置。
阅读全文