题目如图


我的代码如下
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *elem;
int length;
}Sqlist;
void insert(Sqlist *L,int m,int n)
{
if(m>=1 && m<=L->length+1){
for(int j=L->length-1;j>=m-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[m-1]=n;
++L->length;}
}
void delete_(Sqlist *L,int m)
{
if(m<1 || m>L->length)
printf("%d\n",-1);
if(m>=1 && m<=L->length){
printf("%d\n",L->elem[m-1]);
for (int j=m;j<=L->length;j++)
L->elem[j-1]=L->elem[j];
--L->length;}
}
int main()
{
int number,sign,m,n;
Sqlist tmp;
Sqlist *L=&tmp;
L->elem=(int*)malloc(sizeof(int)*100010);
scanf("%d",&L->length);
for (int i=0;i<L->length;i++)
scanf("%d",&L->elem[i]);
scanf("%d",&number);
for (int k=0;k<number;k++)
{
scanf("%d",&sign);
if (sign==1)
{
scanf("%d%d",&m,&n);
insert(L,m,n);
}
if (sign==2)
{
scanf("%d",&m);
delete_(L,m);
}
}
free(L->elem);
return 0;
}
问题是,在一些输出中出现了问题,而且只错其中一个输出,前后都对,如图


麻烦帮忙找一下错误,谢谢