- 预定义
#define true 1
#define false 0
#define OK 1
#define error 0
#define infersible -1
#define overflow -2
typedef int status;
typedef char ElemType;
- 线性表的定义
#define LIST_INIT_SIZE 100
typedef struct{
ElemType elem[LIST_INIT_SIZE];
int length;
}Sqlist
- 初始化顺序线性表
status InitList_Sq(Sqlist &L){
L.elem=new ElemType[MAXSIZE];
if(L.elem)
exit(OVERFLOW);
L.length=0;
return OK;
}
- 销毁线性表
void DestroyList(Sqlist &L){
if(L.elem)
delete L.elem;
}
- 清空线性表
void ClearList(Sqlist &L){
L.length=0;
}
- 求线性表L长度
int GetLength(Sqlist L){
return (L.length);
}
- 判断线性表是否为空
int IsEmpty(Sqlist L){
if(L.length==0)
return 1;
else
return 0;
}
- 线性表取第i个值
int GetElem(Sqlist L,int i,ElemType &e){
if(i<1||i>L.length)
return error;
e=L.elem[i-1];
return OK;
}
- 按值查找线性表元素-顺序查找法
int LocateElem(Sqlist L,ElemType e){
for(i=0;i<L.length;i++)
if(L.elem[i]==e)
return 0;
return 0;
}
平均查找长度ASL=
- 插入元素
status ListInsert_Sq(Sqlist &L,int i,ElemType e){
if(i<1||i>L.length+1)
return error;
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;
L.length++;
return OK;
}
平均移动次数=
平均时间复杂度=O(n)
- 删除元素
status ListDelete_Sq(Sqlist &L,int i){
if(i<1||i>L.length)
return error;
for(j=1;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return OK;
}
平均移动次数=
平均时间复杂度=O(n)