静态分配
//定义
#include <stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize]; //设置为用数组存放元素
int length; //顺序表的当前长度
}SqList //该语句表示这是一个顺序表
//初始化一个顺序表
void InitList(SqList &L){
for(int i=0; i<MaxSize; i++)
L.data[i]=0;
L.length=0;
}
//主函数
int main(){
SqList L;
InitList (L);
return 0;
}
动态分配
malloc函数用于动态的的分配一段连续的空间
free用于动态的释放一段连续的空间
//定义
#include <stdio.h>
#include <stdlib.h> //包含了malloc、free函数
#define InitSize 10 //默认最大长度
typedef struct{
int *data; //这个指针指向分配空间的这个数组
int MaxSize;
int length; //顺序表的当前长度
}SqList //该语句表示这是一个顺序表
//初始化函数
void InitList(SqList &L){
L.data=(int *) malloc(Initsize * sizeof(int)); //使用malloc函数动态的分配一段空间,让指针指向它
L.length=0; //这是当前长度,意思是该顺序表是空的
L.MaxSize=InitSize; //这是最大长度,意思就是在最大长度内都可以写入数据
}
//增加动态数组长度的函数
void IncreaseSize(SeqList &L,int len){
int *p=L.data; //新建一个指针让它和*data一样也指向该数组
L.data=(int *) malloc((L.MaxSize+len)*sizeof(int)); //让*data指针指向新开辟的一段空间
for(int i=0;i<L.length;i++){
L.data[i]=p[i]; //把p指针的内容赋值给data指针
}
L.MaxSize=L.MaxSize+len; //数组的最大长度进行更新
free(p);
}
//主函数
int main(){
SeqList L;
InitList(L);
IncreaseList(L,5);
return 0;
}