1 获得元素的操作
要获得线性表中第i个元素的值,只要i的数值在数组下标范围内,就把i-1下标的值返回即可。
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
typedef int Status;//Status是函数的类型,其值是函数结果状态码
Status GetElem(SqList L, int i, ElemType *e){
if(L.length==0 || i<1 || i>L.length)//i的合理性判读
return ERROR;
*e=L.data[i-1];
return OK;
}
2 插入元素
插入算法的思路
如果插入的位置不合理,抛出异常;
如果线性表的长度大于等于数组的长度,抛出异常或者增加容量;
从最后一个元素开始向前遍历到第i个位置,分别将他们向后移动一个位置;
将要插入的元素填入位置i处;
表长加1;
注意:插入的位置i是指线性表的位置,范围是1到length;移动元素的时候是以数组的存储来考虑,所以是从0开始到length-1
Status LstInsert(SqList *L, int i, ElemType e){
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-1;k--)
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;//表长加1
return OK;
}
3 删除操作
如果删除的位置不合理,抛出异常;
取出删除元素;从删除位置开始便利到最后一个元素的位置,分别将他们向前移动一个位置;
表长减1;
Status LstDelete(SqList *L, int i, ElemType elete*e){
if(L->length ==0)
return ERROR;
if(i<1 || i> L->length)
return ERROR;
*e=L->data[i-1];
if(i<L->length){
for(int k=i;k<L->length;k++)
L->data[k-1]=L->data[k];
}
L->length--;
return OK;
}