c++添加两个成员函数,实现对线性表的排序和就地逆置,并应用到主函数中
时间: 2024-10-13 11:16:12 浏览: 7
在C++中,为了实现对线性表(如数组或动态容器如vector)的排序和就地逆置操作,你可以创建一个包含这两个成员函数的类。这里是一个简单的示例:
首先,我们定义一个名为`List`的类,它有一个私有变量存储线性表的数据,并提供两个公开的成员函数:`sort()`用于排序,`reverseInPlace()`用于就地逆置。
```cpp
#include <iostream>
#include <algorithm> // 包含sort算法
class List {
private:
int* data; // 线性表数据指针
size_t size; // 表大小
public:
// 构造函数,初始化空列表
List(size_t capacity = 0) : data(new int[capacity]), size(capacity) {}
// 添加元素到列表末尾
void add(int value) {
if (size == capacity)
resize(size * 2); // 当满时扩大容量
data[size++] = value;
}
// 私有函数,用于排序
void sortImpl() {
std::sort(data, data + size);
}
// 公开函数,对列表进行排序
void sort() {
sortImpl();
}
// 就地逆置列表
void reverseInPlace() {
std::reverse(data, data + size);
}
// 示例:在主函数中使用
friend void mainFunction(List& list);
private:
// 扩大列表容量
void resize(size_t newCapacity) {
int* newData = new int[newCapacity];
for (size_t i = 0; i < size; ++i)
newData[i] = data[i];
delete[] data;
data = newData;
size = newCapacity;
}
};
// 主函数中如何使用
void mainFunction(List& list) {
list.add(5);
list.add(2);
list.add(9);
std::cout << "Before sorting:\n";
for (int i : list.data) {
std::cout << i << " ";
}
std::cout << "\n";
list.sort(); // 对列表进行排序
std::cout << "After sorting:\n";
for (int i : list.data) {
std::cout << i << " ";
}
std::cout << "\n";
list.reverseInPlace(); // 逆置列表
std::cout << "After reversing in place:\n";
for (int i : list.data) {
std::cout << i << " ";
}
std::cout << "\n";
}
```
在这个例子中,`mainFunction`展示了如何实例化`List`并调用排序和逆置操作。注意,`sort()`方法直接作用于列表,而`reverseInPlace()`不需要额外的内存空间,因为它改变了原数组的顺序。
阅读全文