Status ListInsert(SqlList *L, int i, ElemType e)
{
int k;
if (L->length == MAXSIZE)//順序線性表已滿
return ERROR;
if (i<1 || i>L->length + 1)//當(dāng)i不在范圍時
return ERROR;
if (i <= L->length)//若插入數(shù)據(jù)位置不在表尾
{
for (k = L->length - 1; k >= i - 1; k--)//將要插入位置后數(shù)據(jù)元素向后移動一位
L->data[k + 1] = L->data[k];
}
L->data[i - 1] = e;
L->length++;
return OK;
}
Status ListDelete(SqlList *L, int i, ElemType *e)
{
int k;
if (L->length == 0)//線性表為空
return ERROR;
if (i<1 || i>L->length)
return ERROR;
*e = L->data[i - 1];
if (i < L->length)//如果刪除不是最后位置
{
for (k = i; k < L->length; k++)//將刪除位置后繼元素前移
L->data[k - 1] = L->data[k];
}
L->length--;
return OK;
}
順序存儲結(jié)構(gòu)優(yōu)點
1.無須為表示表中元素之間的邏輯關(guān)系而增加額外的存儲空間
2.可以快速的存取表中任意一元素的位置
缺點:
1.插入和刪除操作需要移動大量元素
2.當(dāng)線性表長度變化較大時,難以確定存儲空間的容量
3.造成存儲空間的碎片