顺序存储的结构代码
#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; }