一、动态分配空间增加
我们这次说的内容是基于上次的线性表空间的动态和静态分配,(点击这里复习—>超级详细之数据结构线性表的静态和动态分配_易烊千玺编外老婆的博客-CSDN博客)
说是线性表的动态分配可以根据内容大小来分配,但是当分配完成之后,要怎么实现动态空间的增加呢?
我们用个流程图来说明
假设我们分配一个只能容纳10个人的房间A,每个人都有对应的小空位。
现在房间A中都有人,那么当第11个人要进来时,空间不够,需要需要一片更大的房间B来存放这些人,并且需要把原来的那些人调到新的房间B里面去
相关代码如下:
typedef struct {
int *data;
int length;//结构体当前的空间
int maxsize;//设置了结构体的最大空间
}consumer;//定义了一个结构体
void addList(consumer &L, int len) {//len表示需要新增的长度
int i = 0;
int* p = L.age;
L.age = (int*)malloc(sizeof(int) * (Initsize + len));
while ( i < L.length) {
L.age[i] = p[i];
}//需要一个个的
L.maxsize = Initsize + len;
free(p)//释放空间
}
学会了吗