静态顺序表
typedef int DataType;
#define MAX_SIZE (100)
typedef struct SeqList {
DataType array[MAX_SIZE];
int size; // 当前可用下标
} SeqList;
动态顺序表
typedef int DataType;
typedef struct SeqListD {
DataType * array;
int capacity; // 当前容量 等于 静态顺序表 MAX_SIZE
int size; // 同静态顺序表
} SeqListD;
区别
- 静态顺序表和动态顺序表唯一一点不同的是,静态顺序表再创建顺序表的时候容量已经确定为MAX_SIZE,不可以更改,而动态顺序表的容量是由malloc函数动态开辟,当容量不够用时可以增加容量capacity
- 扩容方法:动态开辟一块新的空间(一般为原空间的两倍),将原空间的数据拷贝到新的空间,然后让array指针指向新的空间并且释放旧空间
优缺点比较
- 静态顺序表创建空间时为静态开辟,不用malloc函数,代码相对简单(一点点),不存在内存泄露问题
- 动态顺序表,动态开辟空间,使用相对灵活,相比于静态开辟空间也可以少空间浪费