- 如果插入的位置<0直接return
- 如果插入的是位置>=length 调用添加元素函数
- 位置不在length的范围内只能后移元素
插入第length的位置时
顺序表插入元素前
插入元素成功
当pos < length
顺序表插入前
插入的过程
插入元素成功
代码演示:
bool ListInsert(Sqlist& list, int pos, const ElemType& val) noexcept(true){
bool ret = false;
size_t& length = list.length;
ElemType*& e = list.elems;
if (pos < 0) {
return ret;
}
if (pos >= length) {
return ListAppend(list, forward<const ElemType>(val));
}
for (size_t i = length; --i >= pos;) {
e[i + 1] = e[i];
}
e[pos] = static_cast<const ElemType&&>(val);
++length;
ret = true;
return ret;
}