顺序存储
静态实现
1 |
|
动态实现
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10 // 默认最大长度
typedef struct{
int * data;//指示动态分配数组的指针
int MaxSize;//顺序表的最大容量
int length;//顺序表的当前长度
}SqList;
void InitList(SqList &L);
void IncreaseSize(SqList &L, int len);
int main(void) {
SqList L; //声明一个顺序表
InitList(L);//初始化顺序表
for(int i=0;i<L.MaxSize;i++){
L.data[i]=i;
printf("%d\n",L.data[i]);
}
IncreaseSize(L, 5); //增加顺序表长度
for(int i=0;i<L.MaxSize;i++){
//L.data[i]=i;
printf("%d",L.data[i]);
}
return 0;
}
void InitList(SqList &L) {
//用malloc函数声明一片连续的存储空间,,实际大小为10*int个字节
L.data = (int *)malloc(InitSize*sizeof(int));
L.MaxSize = InitSize;
L.length = 0;//因为长度设0,所以增加动态数组用的MaxSize
}
//增加动态数组的长度
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.MaxSize; i++) {
L.data[i] = p[i];
// printf("%d\n",L.data[i]);
}
L.MaxSize = L.MaxSize + len;
free(p);
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zangyzhi!