看了几个例子,心中有了些底子,把前面有些程序分割开,慢慢写出来。
插入算法思路:
1.如果插入不合理,抛出异常;
2.如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;
3.从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;
4.将要插入元素填入位置i处;
5.表长加1.
//在L中第i个位置之前插入新元素e,L的长度加1
int listinsert(Sqlist * 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=L->length-1;k>=i;k--) //后移一位
L->data[k+1] = L->data[k];
}
L->data[i-1] = e; //插入
L->Length++;
return OK;
}
一样以来,简单明了。
删除算法思路不给出来了,和插入大同小异,给上代码
//删除L中第i个元素,并用e返回其值,L长度减1
int listDelete(Sqlist * 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;
}