C++才有引用&
C是*
#include
#include
#define InitSize 10//默认的最大长度
typedef struct {
int* data; //指示动态分配数组的指针
int MaxSize;
int length;
}SqList;
void InitList(SqList* L)
{
// for (int i = 0;i < InitSize;i++)
//L->data[i] = 0;
L->data = (int*)malloc(InitSize * sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
for (int i = 0;i < InitSize;i++)
L->data[i] = 0;
}
void IncreaseList(SqList* L, int len)
{
int* p = L->data;
L->data = (int*)malloc((L->MaxSize + len) * sizeof(int));
L->MaxSize = L->MaxSize + len;
for (int i = 0;i < L->MaxSize;i++)
{
L->data[i] = p[i];
if (i >= InitSize && i < L->MaxSize)
L->data[i] = 0;
}
free(p);
}
int main()
{
SqList L;
InitList(&L);
IncreaseList(&L, 5);
for (int i = 0;i < 15;i++)
{
printf("data[%d]=%dn", i, L.data[i]);
}
return 0;
}
三、结果如图 四、总结顺序表的动态分配过程:顺序表先定义和初始化,初始化时申请一片连续的存储空间,指针A指向空间的首地址。增加顺序表容量时,在另一片空间内继续申请新的连续存储空间,指针B指向该地址的首地址,将第一片空间的内容复制到新申请的区域,释放第一片空间。



