栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Review C++【动态数组】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Review C++【动态数组】

动态数组的创建

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

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

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

文件 Array.hpp
  • 创建动态数组

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

}Dynamic_Array;

  • 初始化动态函数
    malloc 分配动态能存空间
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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号