顺序表的静态存储:用“数组”存放数据元素
/*顺序表的静态分配*/
#define MaxSize 10 //最大长度
typedef struct{
ElemType data[MaxSize]; //用静态的数组存放数据元素
int length; //当前的长度
} SqList; //类型定义
/**************************************************************/
#include<stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
} SqList;
//基本操作---顺序表的创建
void InitList(SqList &L)
{
L.Length = 0;
}
int main()
{
SqList L; //声明一个顺序表
InitList(L); //初始化顺序表
return 0;
}
顺序表的动态分配:用malloc和free函数在内存中动态分配存储空间存放数据元素
/*顺序表的动态分配*/
#define InitSize 10 //初始长度
typedef struct{
ElemType *data; //动态分配数组的指针
int MaxSize; //最大长度
int length; //当前长度
} SqList;
/********************************************************/
#include<stdlib.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.length = MaxSize + len;
free(p);
}
int main()
{
SqList L; //声明一个顺序表
InitList(L); //初始化一个顺序表
IncreaseSize(L, 5);
return 0;
}