92 lines
2.4 KiB
C++
92 lines
2.4 KiB
C++
|
// 自定义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;
|
|||
|
}
|