之前写的多个函数需要在main函数中进行测试
首先打开控制台时我们可以定义控制台的颜色
通过system("%dF"),%d通过选择
//2f绿色
//3f蓝色
//4f红色
//5f紫色
//6f橙色
//7f白色
system("color 2F");
选择颜色后选则不让控制台输出press any key to continue
(如何在DOS系统中不是立刻结束执行)
在程序末尾加一个getch(); 注意加头文件conio.h
getch():
所在头文件:conio.h
函数用途:从控制台读取一个字符,但不显示在屏幕上
函数原型:int getch(void)
返回值:读取的字符
准备完成我们开始测试
//初始化动态数组
Dynamuc_Array *myArray= Init_Array();
对应我们的函数
```cpp
//申请内存
Dynamuc_Array *myArray=(Dynamuc_Array*)malloc(sizeof(Dynamuc_Array));
//初始化
myArray->size=0;
myArray->capacity=20;
myArray->pAddr=(int*)malloc(sizeof(int)*myArray->capacity);
return myArray;
从1到10循环插入
//插入元素
for(int i=0;i<10;i++)
{
Push_Back_Array(myArray,i);
}
## 对应函数:
void Push_Back_Array(Dynamuc_Array *arv,int value)
if(arv==NULL)
{
return;
}
//判断空间是否足够
if(arv->size==arv->capacity)
{
//第一步,申请更大空间,新空间是原空间的俩倍
int* newSpace =(int*)malloc(sizeof(int)* arv->capacity*2);
//第二部,拷贝数据到新空间
memcpy(newSpace,arv->pAddr,arv->capacity*sizeof(int));
//第三部,释放旧空间的内存
free(arv->pAddr);
//更新容量
arv->capacity=arv->capacity*2;
arv->pAddr=newSpace;
}
//插入
arv->pAddr[arv->size]=value;
arv->size++;
```打印动态数组的值
```cpp
Print_array(myArray);
打印具体实现
//打印
void Print_array(Dynamuc_Array *arv)
{
//基本每个数组都要定义这个数组,因为数组首先要判断大小
if(arv==NULL)
{
return;
}
for(int i=0;i<arv->size;i++)
{
printf("%d\t",arv->pAddr[i]);
}
printf("\n");
}
实现效果:
如果想继续插入元素可以继续调用:
Push_Back_Array();
基于位置删除
基于删除我们心中4的
RemoveBypos(myArray,4);
``函数实现
//根据位置删除
```cpp
void RemoveBypos(Dynamuc_Array *arv,int pos)
{
if(arv==NULL)
{
return;
}
if(pos<0||pos>=arv->size)
{
return;
}
//删除元素
for(int i=pos;i<arv->size;i++)
{
arv->pAddr[i]=arv->pAddr[i+1];
}
arv->size--;
}
```效果
![根据位置删除元素](https://img-blog.csdnimg.cn/bce046c551df41e2b310f89d87b661a2.png)
//根据值删除
RemoveByvalue(myArray,4);
函数实现
```cpp
void RemoveByvalue(Dynamuc_Array *arv,int value)
{
if(arv==NULL)
{
return;
}
//删除元素
int pos=Find_array(arv,value);
RemoveBypos(arv,pos);
}
```展示效果![根据位置删除](https://img-blog.csdnimg.cn/5007135070414600aa843b5dd1c9238f.png)
//清空数组
Clear_Array(myArray);
Print_array(myArray);
//清空数组
```cpp
void Clear_Array(Dynamuc_Array *arv)
{
if(arv==NULL)
{
return;
}
arv->size=0;
}
```//释放内存数组的内存
//养成良好习惯,释放内存
```cpp
void PressSpace_Array(Dynamuc_Array *arv)
{
if(arv==NULL)
{
return;
}
if(arv->pAddr!=NULL)
{
free(arv->pAddr);
}
free(arv);
}
测式函数
```cpp
```void test01()
{
//初始化动态数组
Dynamuc_Array *myArray= Init_Array();
//插入元素
for(int i=0;i<10;i++)
{
Push_Back_Array(myArray,i);
}
Push_Back_Array(myArray,12);
//RemoveBypos(myArray,4);
//RemoveByvalue(myArray,4);
//RemoveBypos(myArray,4);
Print_array(myArray);
int Array_size=Size_Array(myArray);
int Array_Capacity=Capacity_Array(myArray);
printf("当前动态数组长度为%d\n",Array_size);
printf("当前动态数组容量为%d\n",Array_Capacity);
int a=0;
printf("输出你所要查询的位置:");
scanf("%d",&a);
int value=At_Array(myArray,a);
printf("当前动态数组%d位置为%d\n",a,value);
//清空
Clear_Array(myArray);
Print_array(myArray);
}
成果展示
有问题请联系qq:2832352904