C++实现线性列表(类似数组)结构的数据元素操作

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;
}

三、示例结果
在这里插入图片描述

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值