qfedu-cpp-level/day4/homework/h6.cpp

92 lines
2.4 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 自定义ArrayList类实现线性列表类似数组结构的数据元素操作。操作方法
// 1. add(int) 添加int整型的数据元素
// 2. remove(int) 删除数据元素
// 3. int get(int index) 获取指定位置的元素
// 4. void print() 打印列表中所有元素
// 5. int size() 返回列表的当前大小
// 6. void sort(bool reversed = false) 元素排序reversed为true时表示从大小到小反之表示从小到到。
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
class ArrayList
{
private:
vector<int> elements; // 动态数组元素
public:
void add(int value) // 添加 int 整型的数据元素
{
elements.push_back(value);
}
void remove(int index) // 删除数据元素
{
int size = elements.size();
if (index >= 0 && index < size)
elements.erase(elements.begin() + index);
}
int get(int index) // 获取指定位置的元素
{
int size = elements.size();
if (index >= 0 && index < size)
return elements[index];
return -1; // 返回无效索引,表示未找到元素
}
void print() // 打印列表中的所有元素
{
for (int i = 0; i < elements.size(); i++)
cout << elements[i] << " ";
}
int size() // 返回列表的当前大小
{
return elements.size();
}
void sort(bool reversed = false) // 默认从小到大排序当reversed 为 true 时,从大到小排序
{
if (reversed == true)
std::sort(elements.rbegin(), elements.rend());
else
std::sort(elements.begin(), elements.end());
}
};
int main()
{
ArrayList list;
list.add(5);
list.add(2);
list.add(8);
list.add(9);
list.add(13);
cout << "原始列表: ";
list.print();
cout << endl;
cout << "列表大小为: " << list.size() << endl;
cout << "删除第二位的元素后显示为: ";
list.remove(2);
list.print();
cout << endl;
cout << "此时第二位的元素为: " << list.get(2) << endl;
cout << "从大到小排序后列表为: ";
list.sort(true);
list.print();
cout << endl;
cout << "从小到大排序后列表为: ";
list.sort();
list.print();
cout << endl;
return 0;
}