动态数组
整体总览
1、
struct dynamicArray* init_DynamicArray(int capacity)
2、
void insert_DynamicArray(struct dynamicArray * array, int pos, void * data)
3、
void foreach_DynamicArray(struct dynamicArray* array,void(*myPrint)(void *))
4、
void removeByPos_DynamicArray(struct dynamicArray* array, int pos)
5、
void removeByValue_DynamicArray(struct dynamicArray* array, void* data, int(*myCompare)(void *, void *))
6、
void destroy_DynamicArray(struct dynamicArray* array)
1、设计时考虑
(1)、无法确定用户的数据类型
(2)、无法确定数据分配的具体位置
(3)、不管存放在哪,不管是什么数据类型,放在内存中都会有数据的地址
2、数据类型选择——void *
原因:无法确定用户的数据类型
3、在插入数据时,要先判断是否满,然后将数据往后移,再添加数据
4、在删除数据时,直接进行数据移动,将数据覆盖即可
5、在插入和删除过程中不要忘记改变"数组大小"
6、注意回调函数的使用
使用对象:通常是无法确定数据类型,要靠用户自己提供函数操作。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>
struct dynamicArray
{
void** pAddr;
int m_capacity;
int m_size;
};
struct dynamicArray* init_DynamicArray(int capacity)
{
if (capacity <= 0 )
{
return NULL;
}
struct dynamicArray* array = malloc(sizeof(struct dynamicArray));
if (NULL == array)
{