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

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指针在此处相当于充当了一个中间变量,将原来的顺序表先暂存在某处,然后用另一个指针重新分配更多

的空间使用。

此方法时间开销大。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读