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