顺序表删除操作之后表长未减少且最后一个数重复

#include"stdio.h"
#include"stdlib.h"
#define MAXSIZE 11
typedef int DataType;
typedef struct
{ DataType data[MAXSIZE];
int last;
}SeqList;
SeqList SL,L=&SL;
establish()
{
int i;
srand((unsigned)time(NULL));
L->last=-1;
printf("即将随机数字:\n");
for(i=0;i<10;i++)
{
L->data[i]=rand()%100;
L->last++;
printf("%d\n",L->data[i]);
}
}
insert(SeqList
L,int i,DataType x)
{
int j;
printf("请输入插入元素位置:\n");
scanf("%d",&i);
printf("要输入的数字是:\n");
scanf("%d",&x);
printf("插入数字之后的顺序表为:\n");
for(j=L->last;j>=i-1;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=x;
L->last++;
}
browse(SeqList *L)
{
int m;
for(m=0;m<MAXSIZE;m++)
{
printf("%d\n",L->data[m]);
}
}
cancel(SeqList *L,int p)
{
int j;
printf("要删除哪个位置的元素:\n");
scanf("%d",&p);
printf("删除元素之后的顺序表:\n");
for(j=p;j<=L->last;j++)
L->data[j-1]=L->data[j];
L->last--;
}
main()
{ int x=0;
int k=0;
int n=0;
establish();
insert(L,x,k);
browse(L);
cancel(L,n);
browse(L);
}

img

1.