1.顺序表的定义
定义动态存储结构的顺序表
typedef struct {
ElemType *data;
int length;
} SeqList;
2.初始化
bool InitList(SeqList &L) {
L.data = (ElemType *)malloc(MaxSize*sizeof(ElemType));//分配MaxSize大小的数组空间
if(!L.data) return false;//存储分配失败,退出
L.length = 0;
return true;
}
3.插入
在顺序表第i个位置插入元素e
需要注意的是,由于数组下标从0开始,所以第i个位置代表着数组下标为i-1的元素,即L.data[i],下同。
bool InsertList(SeqList &L, int i, ElemType e) {
if(i<0||i>L.length+1) return false;//i值不合法
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++;//插入一个元素,不要忘记表长加1
return true;
}
4.删除
删除顺序表第i个元素
bool DeleteList(SeqList &L, int i) {
if(i<1||i>L.length) return false;
for(int j=i-1; j<L.length; j++)
L.data[j] = L.data[j+1];
L.length--;
return true;
}
5.查找
int LocateElem(SeqList L, ElemType e){
for(int i=0; i<L.length; i++)
if(L.data[i]==e) return i+1;
return -1;
}