#初学顺序表,自己做的顺序表的动态插入代码,能成功运行,但是有debug,怎么调试都不对,望解答
```c++
#include<iostream>
#include<cstdlib>
using namespace std;
int const bigsize = 5;
typedef struct
{
int* data;
int maxsize;
int length;
}Sqlist;
void InitList(Sqlist& L);//初始化表
void IncreaseList(Sqlist& L, int len);//添加表的长度
bool ListInsert(Sqlist& L, int i, int e);//在第i个位置插入指定元素e
int main()
{
Sqlist L;
InitList(L);//初始化表
for (int i = 0; i < L.maxsize; )
{
cout << "请输入第" << ++i << "个元素:";
cin >> L.data[i];
L.length++;
}
IncreaseList(L, 2);//扩展顺序表内存空间
if (ListInsert(L, 3, 184))
{
cout << "已成功插入所选元素至所选位置" << endl;
}
else {
cout << "所插入元素不合法,请重新输入" << endl;
}
if (ListInsert(L, 3, 170))
{
cout << "已成功插入所选元素至所选位置" << endl;
}
else {
cout << "所插入元素不合法,请重新输入" << endl;
}
for (int i = 0; i <L.length;)
{
cout << "该顺序表的第" << ++i << "个元素是:" << L.data[i] << endl;
}
system("pause");
}
void InitList(Sqlist& L)//初始化表
{
L.data = (int*)malloc(sizeof(int) * bigsize);
L.maxsize = bigsize;
L.length = 0;
}
void IncreaseList(Sqlist& L, int len)//延长表
{
int* ptr = L.data;
L.data = (int*)malloc(sizeof(int) * (len + bigsize));
for (int i = 0; i < L.length; i++)
{
L.data[i] = ptr[i];
}
free(ptr);
L.maxsize += len;
}
bool ListInsert(Sqlist& L, int i, int e)//在顺序表中插入元素
{
if (i<1 || i>L.length + 1)
return false;
if (L.length >= L.maxsize)
return false;
L.length += 1;
for (int j = L.length; j >= i; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
return true;
}
```