一 静态实现:
#include<stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){ //&L带回来值
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0; //必须初始化为0
}
int main(){
SqList L;
InitList(L);
for(int i=0;i<MaxSize;i++){
printf("data[%d]=%d\n",i,L.data[i]);
}
return 0;
}
二 动态分配:
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct{
int *data;
int MaxSize;
int length;
}SeqList;
void InitList(SeqList &L){
//使用malloc申请一片连续的内存
L.data=(int *)malloc(InitSize*sizeof(int));
L.length=0;
}
//动态增加数组的长度
void IncreaseSize(SeqList &L,int len){
//p指向原始的L值,用以保存原始值
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];
}
//顺序表最大长度加len
L.MaxSize=L.MaxSize+len;
//释放原来的内存空间
free(p);
}
int main(){
SeqList L;
InitList(L);
IncreaseSize(L,5);
return 0;
}
示意图: