顺序存储的结构代码
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
Elemtype date[MAXSIZE];
int length;
}SqList;
获得元素的操作
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
Status GetElem(SqList L,int i,ElemType *e)
{
if(L.length==0 || i<1 || i>L.length) return ERROR;
*e=L.data[i-1];
return OK;
}
插入
初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
操作结果:在L中第i个位置前插入新的数据元素e,L的长度加1
Status 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-1;k--)
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;
return OK;
}
删除
初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
Status 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;
}