顺序表删除:保存值、前移、缩短表长

1. 定位第 index 个元素

删除第 3 位时,数组下标是 index - 1 = 2

a1
a2
a3
a4
a5
01234
*deletedValue = list->data[index - 1];

2. 后继元素依次前移

a4 覆盖 a3 的位置,a5 覆盖 a4 的位置。

a1
a2
a4
a5
old
01234
for (int moveIndex = index; moveIndex < list->length; moveIndex++) {
    list->data[moveIndex - 1] = list->data[moveIndex];
}

3. length 减 1

最后一个旧位置不再属于有效线性表内容,是否清空不影响逻辑表。

a1
a2
a4
a5
unused
01234
list->length--;