顺序存储定义及基本操作
定义形式
typedef struct
{
ElemType *elem;
int length;
}SqList;
初始化
Status InitList(SqList *L)
{
L->elem=(ElemType *)malloc(MAX*sizeof(ElemType));
if(!L->elem)
return ERROR;
L->length=0;
return OK;
}
获取元素
Status GetElem(SqList *L,int i,ElemType *e)
{
if(L->length==0||i<1||i>L->length)
return ERROR;
*e=L->elem[i-1];
return OK;
}
插入元素
Status InsertList(SqList *L,int i,ElemType e)
{
if(i<1||i>L->length)
return ERROR;
if(L->length>MAX)
return ERROR;
int j;
for(j=L->length-1;j>=i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;
L->length++;
return OK;
}
删除元素
Status DeleteList(SqList *L,int i)
{
if(i<1||i>L->length)
return 0;
if(L->length==0)
return 0;
int j;
for(j=i-1;j<=L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}
顺序存储的优缺点
- 优点:存储密度大;可以随机存取表中任一元素。
- 缺点:插入和删除操作需要移动大量元素;当线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的“碎片”。