C++在类里添加两个成员成员函数,实现对线性表的就地逆置和排序,并运用到主函数中
时间: 2024-10-18 17:05:15 浏览: 14
线性表的就地逆置
在C++中,为了实现线性表的就地逆置和排序功能,你可以创建一个包含数据元素和操作函数的类。这里我们首先创建一个简单的`List`类,其中包含一个私有的整数数组以及用于操作的成员函数。
```cpp
#include <iostream>
class List {
private:
int* elements;
size_t size;
public:
// 构造函数和析构函数
List(size_t capacity = 0) : elements(new int[capacity]), size(0) {}
~List() { delete[] elements; }
// 就地逆置列表
void reverseInPlace() {
if (size > 1) {
for (size_t i = 0; i < size / 2; ++i) {
std::swap(elements[i], elements[size - i - 1]);
}
}
}
// 插入排序算法
void insertionSort() {
for (size_t i = 1; i < size; ++i) {
int key = elements[i];
size_t j = i - 1;
while (j >= 0 && elements[j] > key) {
elements[j + 1] = elements[j];
--j;
}
elements[j + 1] = key;
}
}
// 主函数中演示如何使用这些操作
friend void print(const List& list);
};
// 输出函数,用于辅助测试
void print(const List& list) {
for (size_t i = 0; i < list.size(); ++i)
std::cout << list.elements[i] << " ";
std::cout << "\n";
}
int main() {
List myList(5); // 创建一个有5个初始位置的列表
// 添加一些值
myList.elements[0] = 5;
myList.elements[1] = 2;
myList.elements[2] = 8;
myList.elements[3] = 1;
myList.elements[4] = 9;
// 打印原始列表
std::cout << "Original list: ";
print(myList);
// 就地逆置列表
myList.reverseInPlace();
std::cout << "Reversed list: ";
print(myList);
// 插入排序
myList.insertionSort();
std::cout << "Sorted list: ";
print(myList);
return 0;
}
```
这个例子展示了如何在`List`类中定义逆置和插入排序函数,并在`main()`函数中展示它们的效果。当你运行这个程序,你会看到原始、逆置后的和排序后的列表。
阅读全文