结构体定义
#define maxSize 100
//顺序表的结构体定义
typedef struct{
int data[maxSize]; //存放顺序表元素的数组(以int类型为例)
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
顺序表的操作
//初始化顺序表
void initList(Sqlist &L){
L.length = 0;
}
//返回第一个值等于e的元素的位置
int findElem(Sqlist L, int e){
int i;
for(i = 0; i < L.length; ++i)
if(e < L.data[i])
return i; //若找到,则返回下标
return -1; //没找到,返回-1,作为失败标记
}
//求指定元素位置,用e返回
int getElem(Sqlist L, int p, int &e){
if(p < 0 || p > L.length - 1)
return 0;
e = L.data[p];
return 1;
}
//在顺序表L的第p个位置插入元素e
int insertElem(Sqlist &L, int p, int e){
int i;
if(p < 0 || p > L.length || L.length == maxSize) //位置错误或表长已经达到
return 0; //顺序表的最大允许值,此时插入不成功,返回0
for(i = L.length - 1; i >= p; --i)
L.data[i + 1] = L.data[i]; //从后往前,逐个元素往后移动一个位置
L.data[p] = e; //将e放在插入位置p上
++(L.length); //表内元素多了一个,表长加一
return 1; //插入成功返回1
}
//删除顺序表L中下标为p的元素
int deleteElem(Sqlist &L, int p, int &e){
int i;
if(p < 0 || p > L.length - 1)
return 0; //位置错误返回0
e = L.data[p]; //将被删除元素赋值给e
for(i = p; i < L.length - 1; ++i) //从位置p开始,将其后边的元素逐个前移一个位置
L.data[i] = L.data[i + 1];
--(L.length); //删除元素表长减一
return 1; //删除成功返回1
}