数据结构之动态数组的实现

动态数组

整体总览

  • 功能模块

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)
	{
   
		
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值