线性表插入删除

2018-07-23  本文已影响0人  xcreal

Status ListInsert(SqlList *L, int i, ElemType e)

{

int k;

if (L->length == MAXSIZE)//顺序线性表已满

return ERROR;

if (i<1 || i>L->length + 1)//当i不在范围时

return ERROR;

if (i <= L->length)//若插入数据位置不在表尾

{

for (k = L->length - 1; k >= i - 1; k--)//将要插入位置后数据元素向后移动一位

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;

}

顺序存储结构优点

1.无须为表示表中元素之间的逻辑关系而增加额外的存储空间

2.可以快速的存取表中任意一元素的位置

缺点:

1.插入和删除操作需要移动大量元素

2.当线性表长度变化较大时,难以确定存储空间的容量

3.造成存储空间的碎片

上一篇下一篇

猜你喜欢

热点阅读