线性表的顺序存储
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqlList;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FLASE 0
typedef int Status;
Status GetElem(SqlList L,int i,ElemType *e)
{
if (0 == L.length || i<1 || i>L.length)
return ERROR;
*e = L.data[i-1];
return OK;
}
Status InsertElem(SqlList L,int i,ElemType e)
{
int k;
if (L.length >= MAXSIZE)
return ERROR;
if (i<1 || i>L.length+1)
return ERROR;
if (i <= L.length)
{
for (k = i; k < L.length; k++)
L.data[k] = L.data[k-1];
}
L.data[i - 1] = e;
L.length++;
return OK;
}
Status DelElem(SqlList L, int i,ElemType *e)
{
int j;
if (L.length == 0)
return ERROR;
if (i<1 || i>L.length)
return ERROR;
*e = L.data[i-1];
if (i<=L.length)
{
for (j = i + 1; j <= L.length; j++)
{
L.data[j-2] = L.data[j-1];
}
}
L.length--;
return OK;
}
优缺点
优点:
- 无需为表示表中数据的关系而增加额外的存储空间
- 可以快速的存取表中任意位置的元素
缺点:
- 插入和删除元素需要移动大量的数据
- 当线性表的长度变化较大时,难以确定存储空间的容量
- 造成存储空间的碎片