动态数组的初始化实现
#include <iostream>
using namespace std;
struct dynamicArray{
void **pAddr;
int m_capacity;
int m_size;
}
struct dynamicArray *initdynamicArray(int capacity){
if(capacity<=0) {
return 0;
}
struct dynamicArray *array=malloc(sizeof(struct dynamicArray))
if(array=NULL){
return 0;
}
array->pAddr=malloc(sizeof(void*)*capacity);
array->m_capacity=capacity;
array->size=0;
return array;
}
功能函数系列
//开始插入辣
```void *insert(struct dynamicArray *array,int pos,void *data){
if(array==NULL||data==NULL){
return 0;
}
if(pos<=0||pos>array->m_size){
pos=array->m_size;
}
if(array->m_size==array->capacity){
int newCapacity=array->capacity;
void **newSpace=malloc(sizeof(void*)*newCapacity);
memcpy(newSpace,array->pAddr,sizeof(void *)*array->capacity);
free(array->pAddr);
array->pAddr=newSpace;
}
//插入:把所有数据往后移动
for(int i=array->m_size;i<=pos;i--){
array->pAddr[i+1]=array->pAddr[i];
}
//插入新元素
array->pAddr[pos]=data;
//遍历数组
void foreach_Dynamicarray(struct dynamicArray *array,void(myPrint)(void*)){
for(int i=0;i<array->m_size;i++){
myPrint(array->pAddr[i]);
}
}
void myPrintPerson(void *data){
struct person *p=data;
cout<<p->blabla<p->blabuble<endl;
}
//来个删除
void remove(struct dynamicArray *array,int pos){
if(array==NULL||pos<=0||pos>=array->){
return 0;
}
for(int i=array->m_size;i>=pos;i--){
array->pAddr[i]=array->pAddr[i+1];
}//按值查找就改下条件 回调函数用法参考遍历
}
//销毁他吧!
void destroy(struct dynamicArray *array){
if(array=NULL){
return 0;
}
if(array->pAddr!=NULL){
free(array->pAddr);
array->pAddr=NULL;
}
free(array);
array=NULL;
}//别忘了置空哦