【c语言求解】已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

我的代码要怎么改呀

#include<stdio.h>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct
{
    ElemType *elem;
    int length;
 } SqList;
int CreateList(SqList *L,int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&L->elem[i]);
    }
    L->length=n;
    return OK;
 } 
Status ListDelete(SqList *L,int item)
{
    int i,j;
    for(i=0;i<L->length;i++)
    {
        if(L->elem[i]==item)
        {
            for(j=i;j<L->length;j++)
            {
                L->elem[j]=L->elem[j+1];
            }
            L->length--;
        }
    }
    return OK;
}
 
 
 int main()
 {
     int i=0,item,n;
     scanf("%d",&n);
     SqList L;
     CreateList(&L,n);
    scanf("%d",&item);
    ListDelete(&L,item);
    for(i=0;i<L.length;i++)
    {
        printf("%d",&L.elem[i]);
    }
    return 0;
 }

将不符合条件的数据存储到数组从0开始的位置

Status ListDelete(SqList *L,int item)
{
    int i,n=0;
    for(i=0;i<L->length;i++)
    {
        if(L->elem[i] != item)
            L->elem[n++] = L->elem[i];
    }
    L->length = n;
    return OK;
}