C++实现线性列表(类似数组)结构的数据元素操作
一、基本函数介绍
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>
using namespace std;
class MyArray{
private:
int arrsize; //数组容量
int arrsize_now;//当前容量
int *arr; //数组
public:
MyArray()
{
this->arrsize = 200;
this->arrsize_now =0;
this->arr = new int[this->arrsize];
}
MyArray(int arrsize)
{
this->arrsize = arrsize;
this->arrsize_now =0;
this->arr = new int[this->arrsize];
}
void add(int nums) //添加元素
{
if(this->arrsize == this->arrsize_now)
{
cout<<"存储空间已满"<<endl;
return ;
}
this->arr[(this->arrsize_now)++] =nums;
cout<<"添加成功"<<endl;
}
void remove(int nums) //删除元素
{
if(this->arrsize ==0)
{
cout<< "没有数据可以删除"<<endl;
}
for (int i = 0; i < this->arrsize_now; i++)
{
if (this->arr[i]==nums)
{
for (int j = i; j<this->arrsize_now ; j++)
{
this->arr[j]=this->arr[j+1];
}
arrsize_now--;
cout<<"删除成功"<<endl;
return;
}
}
cout << "没有这个数据" << endl;
}
int get(int index)//获取指定位置的元素
{
return this->arr[index];
}
void print() //打印列表中所有元素
{
for(int i = 0;i<arrsize_now;i++)
{
cout<<arr[i]<<endl;
}
}
int size() //返回列表的当前大小
{
return this->arrsize_now;
}
void sort(bool reversed=false){ //元素排序,reversed为true时,表示从大到小,反之,表示从小到大。
if(reversed)
{
bigsort();
}
else{
smallsort();
}
}
private:
void bigsort()
{
for(int i =0;i<arrsize_now-1;i++)
{
for(int j = 0;j<arrsize_now-1-i;j++)
{
if(arr[j]<arr[j+1])
{
int tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
}
}
}
}
void smallsort()
{
for(int i =0;i<arrsize_now-1;i++)
{
for(int j = i+1;j<arrsize_now;j++)
{
if(arr[i]>arr[j])
{
int tmp = arr[j];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
};
int main(){
MyArray *s1 = new MyArray(100);
for(int i = 0;i<8;i++)
{
int x = 0;
cout<<"请输入所添加的元素:"<<endl;
cin >> x;
s1->add(x);
}
s1->print();
cout<<"----------------------"<<endl;
s1->remove(3);
s1->print();
cout<<"----------------------"<<endl;
int n =s1->get(1);
cout<<"n="<<n<<endl;
cout<<"----------------------"<<endl;
int m = s1->size();
cout<<"m="<<m<<endl;
cout<<"----------------------"<<endl;
s1->sort(true);
s1->print();
return 0;
}
三、示例结果