直接上代码
//位置删除
void RemoveByPos_DynamicArray(struct DynamicArray *arr,int pos)
{
if(NULL==arr)
{
return;
}
if(pos<0||pos>arr->size-1)
{
return;
}
for(int i=pos;i<arr->size-1;++i)
{
arr->addr[i]=arr->addr[i+1];
}
arr->size--;
}
//按值删除
void RemoveByValue_DynamicArray(struct DynamicArray *arr,void *data,int(*compare)(void *,void *))
{
if(NULL==arr)
{
return;
}
if(NULL==data)
{
return;
}
if(NULL==compare)
{
return;
}
for(int i=0;i<arr->size;++i)
{
if(compare(arr->addr[i],data))
{
RemoveByPos_DynamicArray(arr,i);
break;
}
}
}
//销毁
void Destroy_DynamicArray(struct DynamicArray *arr)
{
if(NULL==arr)
{
return;
}
if(arr->addr!= NULL)
{
free(arr->addr);
arr->addr=NULL;
}
free(arr);
arr=NULL;
}
结果输出
void test()
{
//创建数组
struct