1.线性表L的初始化(参数用引用)
Status IniiList_Sq(SqList &L){ //构造一个空的顺序表L
L.elem=new EleType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW); //异常处理:存储分配失败
L.length=0; //空表长度0
return OK;
}
2.销毁线性表L
void DestroyList(SqList &L){
if(L.elem) delete L.elem; //释放空间
}
3.清空线性表L
void ClearList(SqList &L){
L.length = 0; //将线性表的长度置为0
}
4.求线性表L的长度
int GetLength(SqList L){
return (L.length);
}
5.判断线性表L是否为空
int IsEmpty(SqList L){
if(L.length==0) return 1;
else return 0;
}
6.顺序表的取值(根据位置i获取相应位置数据元素的内容)
int GetElem(SqList,int i,ElemType &e){
if(i<0||i>L.length) return ERROR; //异常处理:判断i值是否合理,若不合理,返回ERROR
e=L.elem[i-1];
return OK;
}
7.顺序表的查找
for
int LocateElem(SqList L,ElemType e){ //在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
for(i=0;i<L.length;i++)
if(L.elem[i]==e) return i+1 //查找成功,返回序号
return 0;//查找失败,返回0
}
while
int LocateElem(SqList L,ElemType e){ //在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
i = 0;
while(i<L.length && L.elem[i]!=e) i++;
if(i<L.length) return i+1 //查找成功,返回序号
return 0;//查找失败,返回0
}
8.顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElemTpe e)[
if(i<1||i>L.length+1) return ERROR; //i值不合法
if(L.length == MAXSIZE) return ERROR; //当前存储空间已满
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
L.elem[i-1]=e; //将新元素e放入第i个位置
L.length++; //表长增1
return OK;
]
9.顺序表的删除
Status ListDelete_Sq(SqList &L,int i)[
if(i<1||i>L.length+1) return ERROR; //i值不合法
for(j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
L.length--; //表长减1
return OK;
]