增加动态数组长度代码思路分析

void IncreaseSize(SeqList &L,int len){
    int *p=L.data;
    L.data=(int *)malloc(L.MaxSize+len)*sizeof(int));
    for(int i=0;i<L.length;i++){
        L.data[i]=p[i];         //将数据复制到新区域
    }            
    L.MaxSize=L.MaxSize+len;    //顺序表最大长度增加 len
    free(p);                    //释放原来的内存空间
   }

在该代码中,L.data和*p指针都指向malloc函数分配的那一片存储区域的头地址。(malloc函数分配一片内存空间)

*p=L.data;将*p指针指向原来顺序表的头指针;

然后使用malloc函数重新分配更大的内存空间,L.data指向新内存空间的头地址;

然后再将*p指向的原来顺序表重新复制到L.data重新分配的新区域,从而实现动态的数组长度增加。

*P指针在此处相当于充当了一个中间变量,将原来的顺序表先暂存在某处,然后用另一个指针重新分配更多

的空间使用。

此方法时间开销大。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值