C++在类中添加两个成员函数,实现对线性表的排序和就地逆置
时间: 2024-10-11 21:03:19 浏览: 32
在C++中,为了实现对线性表的排序和就地逆置功能,你可以创建一个类来封装这两个操作。通常,你会定义一个`List`类,包含一个存储数据的私有数组,并提供公共的成员函数来进行相应的操作。下面是一个简单的例子:
```cpp
#include <iostream>
class List {
private:
int* data; // 存储数据的指针
int size; // 线性表的大小
int capacity; // 容量
public:
// 构造函数,初始化容量并分配内存
List(int capacity_ = 0) : size(0), capacity(capacity_) {
data = new int[capacity];
}
// 插入元素到列表末尾
void push_back(int value) {
if (size == capacity) {
resize(capacity * 2); // 当满时,扩大容量
}
data[size++] = value;
}
// 删除指定索引处的元素并调整剩余部分
void pop_back() {
if (size > 0) {
data[--size] = 0; // 一般会在这里处理,这里仅示例清零
}
}
// 排序函数,可以选择插入排序、快速排序等算法
void sort() {
// 这里实现具体的排序算法,例如插入排序
for (int i = 1; i < size; ++i) {
int j = i - 1;
while (j >= 0 && data[j + 1] < data[j]) {
std::swap(data[j], data[j + 1]);
--j;
}
}
}
// 就地逆置函数,交换相邻元素
void reverse_in_place() {
for (int i = 0; i < size / 2; ++i) {
std::swap(data[i], data[size - i - 1]);
}
}
~List() { // 析构函数释放内存
delete[] data;
}
};
// 示例用法
int main() {
List list(5);
list.push_back(3);
list.push_back(1);
list.push_back(4);
list.push_back(1);
list.push_back(5);
std::cout << "Before sorting: ";
for (int i : list.data) {
std::cout << i << " ";
}
list.sort();
std::cout << "\nAfter sorting: ";
list.reverse_in_place();
std::cout << "After reversing: ";
for (int i : list.data) {
std::cout << i << " ";
}
return 0;
}
```
在这个例子中,`sort()` 和 `reverse_in_place()` 分别实现了对线性表的排序和就地逆置。注意,这只是一个基础的实现,实际应用中需要根据具体需求选择合适的排序算法。
阅读全文