void ListInsert(SqList& L, int i, int e) {
if (i < 1 || i>L.length + 1) {
cout << "位置不合法" << endl;
return;
}
if (L.length >= L.listsize) {
// 分配一个新地址,比原数组增加10个int的空间
int* newbase = new int[L.listsize + ADD_MEMORY];
if (!newbase) {
cout << "扩容失败" << endl;
return;
}
//将原数组的内容拷贝到新地址中
memcpy(newbase, L.elem, sizeof(int) * (L.listsize + ADD_MEMORY));
//释放原指针的空间
delete L.elem;
//让原指针指向新地址,这样原数组的内容没有变化,且空间增加
L.elem = newbase;
L.listsize += ADD_MEMORY;
}
for (int ii = L.length; ii > i - 1; ii--) {
L.elem[ii] = L.elem[ii - 1];
}
L.elem[i - 1] = e;
L.length++;
}