顺序表的动态分配
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a37e07e661c8a41babc3d73933e67bf.jpeg#pic_center)
void InitList(Sqlist &L){
L.data=(int *)malloc(sizeof(int)*InitSize);
L.length=0;
L.Maxsize=InitSize;
}
void IncreaseSize(Sqlist &L,int len){
int *p=L.data;
L.data=(int *)malloc(sizeof(int)*(L.Maxsize+len));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
L.Maxsize=L.Maxsize+len;
free(p);
}
完整代码
#include<stdlib.h>
#include<stdio.h>
#define InitSize 10
typedef struct{
int *data;
int Maxsize;
int length;
}Sqlist;
void InitList(Sqlist &L){
L.data=(int *)malloc(sizeof(int)*InitSize);
L.length=0;
L.Maxsize=InitSize;
}
void IncreaseSize(Sqlist &L,int len){
int *p=L.data;
L.data=(int *)malloc(sizeof(int)*(L.Maxsize+len));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
L.Maxsize=L.Maxsize+len;
free(p);
}
int CreateList(Sqlist &L){
printf("请输入表的长度n\n");
int n,len;
scanf("%d",&n);
if(n<0){
printf("表长不合法");
return false;
}
else if(n==0){
printf("空表");
return false;
}
else{
if(n>L.Maxsize){
printf("当前表的最大容量为%d,请增加数组的最大容量\n",L.Maxsize);
printf("请输入增加的数组容量\n");
scanf("%d",&len);
IncreaseSize(L,len);
}
printf("请输入n个数:\n");
for(int i=0;i<n;i++){
scanf("%d",&L.data[i]);
L.length++;
}
return true;
}
printf("请输入n个数:\n");
for(int i=0;i<n;i++){
scanf("%d",&L.data[i]);
L.length++;
}
return true;
}
void printList(Sqlist L){
for (int i=0;i<L.length;i++){
printf("%d ",L.data[i]);
}
}
int main(){
Sqlist L;
InitList(L);
CreateList(L);
printList(L);
return 0;
}