运行环境 vs2013
定义数组int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2 };
起始长度为10 是不够的 结和malloc函数 进行申请和储存
初始化定义了两个 初始化1让表中全为0 初始化2则是malloc申请空间
主要代码有注释
博主是菜鸟 很多代码可以优化 有疑问可以私聊哦
//动态分配
#include<stdlib.h>
#define InitSize 10
typedef struct{
int *data;
int MaxSize;
int length;
}SqList;
void InitList1(SqList &L){//初始化1
for (int i = 0; i < L.MaxSize; i++)
L.data[i] = 0;
L.length = 0;
}
void InitList(SqList &L){//初始化2
L.data = (int*)malloc(InitSize*sizeof(int));//用malloc函数申请一片连续的储存空间
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(SqList &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);//释放原来的内存空间
}
void CreateList(SqList &L, int a[]){//创造
int i = 0;
for (int i = 0; i < L.MaxSize; i++)
L.data[i] = a[i];
}
void PrintList(SqList L){//打印
int i = 0;
for (int i = 0; i < L.MaxSize; i++)
printf("%d ", L.data[i]);
printf("\n");
}
int main(){
SqList L;//声明
InitList(L);
InitList1(L);
PrintList(L);
int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2 };
CreateList(L, a);
PrintList(L);
IncreaseSize(L, 2);
InitList1(L);
PrintList(L);
CreateList(L, a);
PrintList(L);
return 0;
}
运行结果