//顺序表的定义
//静态分配
#define MaxSize 50 //定义线性表最大长度
typedef struct{
Elemtype data[Maxsize]; //顺序表的元素
int length; //顺序表当前长度
}SqList; //顺序表的类型定义
//动态分配
#define InitSize 100; //表长度的初始定义
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize,length; //定义数组的最大容量和当前个数
}SeqList;
//动态分配的初始语句
L.data = (ElemType*)malloc(sizeof(Elemtype)*InitSize);
//顺序表的基本操作
//声明一个顺序表
void InitList1(SqList &L){//静态
L.length=0;
}
void InitList2(SeqList &L){//动态
L.data=(ElemType*)malloc(MaxSize*sizeof(Elemtype)); //分配存储空间
L.length=0; //初始化表长
L.MaxSize=InitSize;
}
//插入操作 在第i个位置上插入e
bool ListInsert(SqList &L,int i,ElemType e){
if (i<1||i>L.length+1)return false;
if(L.length>MaxSize)return false;
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
//删除操作 删除第i个位置上的元素
bool ListDelete(SqList &L,int i,Elemtype &e){
if (i<1||i>L.length)return false;
e=L.data[i-1]; //第i个位置下标为i-1
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
//按值查找所在位置
int LocateElem(SqList L,ElemType e){
int i;
for(i=0;i<L.length;i++){
if(L.data[i]==e) return i+1;
}
return 0;
}
//线性表的链式表示
线性表代码
最新推荐文章于 2024-08-09 20:16:54 发布