# include
# include
# define initsize 20 //初始分配量
# define LISTINCREMENT 5 //分配增量
typedef int ElemType;
typedef struct //结构体定义
{
ElemType * elem;
int length;
int listsize;
}SqList;
void IntiList(SqList &L, int n)
{
L.elem = new int[initsize];
if (!L.elem)
exit(0);
L.length = n;
}
int ListInsert(SqList &L, int i, ElemType e)
{
if ((i < 1) || (i > L.length + 1))
return 0;
if (L.length >= initsize)
return 0;
for (int j = L.length-1; j >= i-1 ; j--)
L.elem[j+1]=L.elem[j];
L.elem[i+1]=e;;
L.length++;
return 1;
}
int main()
{
int n, j = 0;
ElemType x;
SqList L;
// 建立一个表长为n的顺序表
scanf("%d", &n);
IntiList(L, n); // 初始化顺序表函数,需自行实现
for (int i = 0; i < n; i++)
scanf("%d", &L.elem[i]);
// 输入插入的数字x,并找到x应该插入的位置j
scanf("%d", &x);
for (int i = 0; i < n && L.elem[i] < x; i++)
j = i;
ListInsert(L, j, x); // 插入顺序表函数,需自行实现
// 输出顺序表
for (int k = 0; k < L.length; k++)
printf("%d ", L.elem[k]);
return 0;
}
怀疑是插入那部分错了,但我想不明白。测试数据1:不明白为什么会出现两个15.测试数据2:当插入最前端时的时候,运行结果没插入。按我的设想应该能正常运行的。
不知道你这个问题是否已经解决, 如果还没有解决的话: