Review C++【动态数组】

🐺

动态数组的创建💳

表述:具有想同类型的a1,a2,a3 的表项

  • 性质
    • a0 为第一个元素
    • an 为最后一个元素
    • 除了 a0 和 an 外地其他元素,既有前驱,也有后继
    • 线性表是能逐项访问和顺序存储

创建动态数组并且实现数组的动态更改

文件 Array.hpp📥

  • 创建动态数组
/** 动态存放数组
 * capacity 内存空间
 * size 记录数组中的具体元素
*/

typedef struct DynamicArray
{
 int *pAddr; // 具体存放数据的地址
 int size; // 表示当前有多少个元素
 int capacity;  // 表示当前可以容纳的元素

}Dynamic_Array;

  • 初始化动态函数
    malloc 分配动态能存空间
/**
 * 编写API 对数组进行初始化操作
 * 初始化,插入操作 push_bach
 * 
*/
Dynamic_Array*DynamicArray_Init(){
 Dynamic_Array*myArray = (Dynamic_Array*)malloc(sizeof(Dynamic_Array));
 // 初始化
 myArray->size = 0;
 myArray->capacity = 20;
 myArray->pAddr = (int*)malloc(sizeof(int)*myArray->capacity);
 return NULL;
}

  • 增加数据
    根据传输进来的值增加到数组的末尾上面,注意判断数组内存空间是否足够。
void PushValueArray(Dynamic_Array*array,int value)
{
 // 判断指针是否有效
 if(array == NULL) {return;}

 if( array->size == array->capacity ) {
  // 申请最大的一块内存空间
  int *newSpace = (int*)malloc(sizeof(int*)*array->capacity*2);
  // 目标拷贝对象,被拷贝对象,被拷贝对象的大小
  memcpy(newSpace,array->pAddr,array->capacity*sizeof(int));  
  // 删除内存指向的地址
  free(array->pAddr); 

  // 更新容量
  array->capacity = array->capacity *2;
  array->pAddr = newSpace;
 }
 // 插入元素
 array->pAddr[array->size] = value;
 array->size++;
 std::cout  << "dd" << std::endl;
}
  • 按照位置删除数据
/*位置删除数据*/
void RemovePosArray(Dynamic_Array*array,int pos)
{
 // 判断指针是否有效
 if(array == NULL) {return;}

 if(pos < 0 || pos >= array->size){return;}
 for (int i = pos; i < array->size-1; i++)
 {
  array->pAddr[i] = array->pAddr[i+1];
 }
 array->size--;
}
  • 查找元素
    和原有的查找方式类似
/*查找元素*/
int FindArray(Dynamic_Array*array,int value)
{
 // 判断指针是否有效
 if(array == NULL) {return -1;}
 int pos = -1;
 for (int i = 0; i < array->size; i++)
 {
  if(array->pAddr[i] == value){
   pos = i;
   break;
  }
 }
 return pos;
}

  • 对单元的数据进行查找删除
    使用之前用的查找元素的方式返回了元素的位置数据。
/*根据值对单元数据进行删除*/
void RemoveValueArray(Dynamic_Array*array,int value)
{
 // 判断指针是否有效
 if(array == NULL) {return;}
 // 直接使用位置删除
 int posistion = FindArray(array,value);
 RemovePosArray(array,posistion);
}
  • 返回某个为位置的元素坐标
/*范围某个位置的元素*/
int AtArray(Dynamic_Array*array,int pos)
{
 return array->pAddr[pos];
}

🌸🌸🌸完结撒花🌸🌸🌸


🌈🌈@FEA🌈🌈


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值