插入
bool ListInsert(SeqList& L, int i, int j) {
if (i > L.MaxSize) //当前的存储空间已满 不能够插入
return false;
if (i > L.length + 1 || i < 1) //判断i的范围是否是有效的
return false;
for (int num = L.length ; num >= i; num--) //元素后移
L.data[num] = L.data[num - 1];
L.data[i-1] = j; //位序为i 顺序为i-1 的位置上放入 j
L.length++; //表的长度+1
return true;
}
时间复杂度为O(n)
删除
bool ListDelete(SeqList& L, int i, int &j) {
if (i > L.length || i < 1) //判断i的范围是否是有效的
return false;
j = L.data[i - 1]; //删除元素的数值
for (int num = i - 1; num < L.length; num++) //第i位置后边的元素前移
L.data[num] = L.data[num + 1];
L.length--; //线性表长度减1
return true;
}
int main() {
SeqList L;
InitList(L);
int j;
if(ListDelete(L, 3, j))
printf("已经删除了第3个元素,而且删除的元素值为 % d\n",j);
else
printf("当前位序不合法,删除失败\n");
return 0;
}
时间复杂度为O(n)