动态数组的创建以及增删改查

创建一个动态数组可以从动态内存分配上去考虑,尤其是,动态数组本质上就是动态分配内存空间

动态数组的创建:

以一个结构体为例

将动态数组放入到设置好的一个结构体当中

struct shuzu

{

int*shou;定义数组的首地址

unsigned int rongliang

unsigned int shuliang

};

动态数组的初始化:

主要采用调用函数malloc对动态数组进行初始化

采用调用函数void user(struct shuzu *pr)

{

pr->rongliang=5;设置容量大小

pr->shou=(int*)malloc(sizeof( int)*rongliang)    调用malloc函数动态分配空间并返回给首地址

pr->shuliang=0;

 

}动态数组的初始化主要通过指针去访问结构体中的成员,并对其进行赋值或者分配内存空间

动态数组增添元素:

 

增添元素分位两种情况1:如果数组的容量未满,能够满足增添元素的数量要求,那么可以通过指针访问结构体中首地址的方式采用for循环依次赋值给未使用的数组空间

2:如果数组容量已经满,那么需要通过调用malloc函数给数组增加空间,在采用for循环依次赋值新的元素

62d26369a26241979599ba95168839f7.jpg

 动态数组的中间元素插入

中间元素插入首先设置下标(即要插入的位置)将下表后面的元素依次向后移动一位(不建议向前移动)最后将新元素插入下标位置

这里考虑两种情况1数组容量够用2数组容量不够用,那么需要增加动态数组容量才进行插入方式50983df40b9b446081600eef12527116.jpg

e5a2de886a364e32bbaebd6a6c396053.jpg 

 动态数组的删除,主要分为两种情况1是删除尾部,2是删除中间部分,3是全部删除,删除尾部主要通过对结构体成员数量减去,使得首地址下表访问向前移动,

我们以最开始结构为例调用一个void shanchuwei(struct shuzu *pr)

{

pr->shou[shuliang];

shuliang-=x;//x表示删除元素个数

}

voidshanchuquan(struct shuzu *pr)

{

pr->shou[shuliang]

shuliang=0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值