typedef struct{
int *data;
int length;
}SqList;
int InitList_Sq(SqList &L){//初始化
L.data=new int[Max];
if(!L.data) exit(-2);//如果分配失败的话,返回值-2可以随便取
L.length=0;//空表长度为0
return 1;
}
void DestroyList(SqList &L){//销毁线性表
if(L.data)//如果有数据就直接删除
delete L.data;
}
void ClearList(SqList &L){//清空线性表
L.length=0;//元素个数为0
}
int GetLength(SqList L){//求表长
return(L.length);
}
int IsEmpty(SqList L){//判断表是否空
if(L.length==0) return 1;
else return 0;
}
int GetElem(SqList L,int i,int &e){//按位置查找:取第i个元素,返回值为e,加&引用可直接在函数中改值
if(i<1||i>L.length) return false;//看给的位置合不合理
e=L.data[i-1];//第i个位置在理论上位于i-1上
return 0;
}
int LocateElem(SqList L,int e){//按值查找:找e相同的元素位置
for(int i=0;i<L.length;i++)
if(L.data[i]==e) return i+1;
return 0;
}
int ListInsert_Sq(SqList &L,int i,int e){//线性表插入
if(i<1||i>L.length+1) return -1;//i值不合法
if(L.length==Max) return -1;//储存空间满了
for(int j=L.length-1;j>=i-1;j--)//从最后一位(len-1)开始逐个后移
L.data[j+1]=L.data[j];
L.data[i-1]=e;
L.length++;
return 0;
}
int ListDelete_Sq(SqList &L,int i){//删除
int j;
if(i<1||i>L.length) return -1;
for(j=i;j<=L.length-1;j++)
L.data[j-1]=L.data[j];
L.length--;
return 0;
}
数据结构——线性表操作集(C/C++)
最新推荐文章于 2022-04-28 13:32:26 发布