顺序表的存储结构:
typedef struct{
int data[Maxsize]; //存在顺序表中的元素
int length; //存放顺序表的长度
}SqList;
一.插入元素
分析:
在顺序表中,插入一个元素,跟单链表是不一样的。
顺序表中,无论是插入还是删除,都是通过移动元素的来实现。
这里插入元素,插入位置是自己定的,所以有可能出现参数错误的情况。
因此,我们首先要判断参数是否错误。
其次,还需要注意的是:
这里要输入的参数是:逻辑序号
所以要把它变成物理下标(i–)
思路:
1.判断参数是否错误
2.逻辑序号转化为元素下标
3.通过for循环,后移元素
4.插入元素,顺序表长度加1
5.成功返回1
C代码实现:
int ListInsert(SqList &L,ELemType e,int i){
int j;
if(i < 1 || i > L.length) return 0;
i--;
for(j = L.length; j > i; j--){
L.data[J] = L.data[J-1]; //后移
}
L.data[i] = e; //插入
L.length++;
return 1;
}
二.删除元素
思路:
1.判断参数是否错误
2.逻辑序号转化为元素下标,元素保存(e = L.data[i])
3.通过for循环,前移元素
4.顺序表长度加1
5.成功返回1
C代码实现:
int ListDelete(SqList &L,ELemType e,int i){
int j;
if(i < 1 || i > L.length) return 0;
i--;
e = L.data[i];
for(j = i; j < L.length; j++){
L.data[J] = L.data[J+1]; //前移
}
L.length--;
return 1;
}