线性表的操作
- InitList(L):初始化操作,建立一个空的线性表L。
- ListEmpty(L):判断线性表是否为空表,空返回true,否则返回false。
- ClearList(L):将线性表清空。
- GetElem(L,i,e):将线性表L中的第i个位置元素值返回给e。
- LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功,否则返回0表示失败。
- ListInsert(L,i,e):在线性表L中第i个位置插入新元素e。
- ListDelete(L,i,e):删除线性表L中第i个位置元素,并用e返回其值。
- ListLength(L):返回线性表L的元素个数。
线性表顺序存储的结构代码
#define MAXSIZE 20
typedef struct
{
int data[MAXSIZE];
int length; //线性表当前长度
} Sqlist
GetElem(L,i,e)
int GetElem(Sqlist L,int i,int e)
{
if(L.length==0||i<1||i>L.length)
return 0;
e=L.data[i-1];
return 1;
}
ListInsert(L,i,e)
/* L中第i个位置插入新元素e,L长度+1 */
int ListInsert(Sqlist *L, int i, int e){
int k;
if(L->length == MAXSIZE) //顺序线性表已经满了
return 0;
if(i<1 || i>L->length+1) //i不在范围内
return 0;
if(i <= L->length)
{
for(k=L->length-1;k>=i-1;k--) //空出第i个位置
L->data[k+1] = L->data[k];
}
L->data[i-1] = e;
L->length++;
return 1;
}
ListDelete(L,i)
int ListDelete(Sqlist L, int i){
int k;
if(L->length ==0)
return 0;
if(i<1 || i>L->length)
return 0;
if(i <= L->length)
{
for(k=i;k<=L->length;k++)
L->data[k-1]=L->data[k];
L->length--;
return 1;
}
}