1.顺序表定义
(1)静态创建
#define MaxSize 50
typedef struct{
int data[MaxSize];
int length;
}SqList;
(2)动态创建
#define InitSize 100
typedef struct{
int *data;
int MaxSize, length;
}seqlist;
2.顺序表初始化
(1)静态初始化
void InitList(SqList &L){
L.length = 0;
}
(2)动态初始化
void InitList(seqlist &L){
L.data = (int*)malloc(InitSize*sizeof(int));//强制类型转换
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(seqlist &L,int len){//动态扩展
int *p = L.data;
L.data = (int*)malloc((L.MaxSize+len)*sizeof(int));
for(int i=0;i<L.length;i++)
L.data[i] = p[i];
L.MaxSize = L.MaxSize + len;
free(p);
}
3.顺序表求表长
int Length(SqList L){
return L.length;
}
4.顺序表按值查找
int LocateElem(SqList L, int e){
for(int i=0;i<L.length;i++){
if(L.data[i] == e)
return i+1;
}
return 0;
}
5.顺序表按位查找
int GetElem(SqList L,int i){
if(i>0&&i<=L.length)
return L.data[i-1];
}
6.顺序表插入操作
bool ListInsert(SqList &L,int i,int 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;
}
7.顺序表删除操作
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e = L.data[i-1];
for(int j = i;j<L.length;j++){
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
8.顺序表判空操作
bool Empty(SqList L){
if(L.length<=0){
return true;
}
return false;
}