C语言顺序表,删除元素

题目是这样的:
若一个线性表L采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。

输入格式:
三行数据,第一行是顺序表的元素个数,第二行是顺序表的元素,第三行是x和y。

输出格式:
删除元素值在[x,y]之间的所有元素后的顺序表。

输入样例:
10
5 1 9 10 67 12 8 33 6 2
3 10

输出样例:
1 67 12 33 2
为什么我的运行结果会这样??

img

#include
#include
#define MAX 100
typedef struct cents
{
int data[MAX];
int len;
}List;
List* Delete_list(List* p,int min,int max);
void show_list(List* p);
/////////////////////////
int main(void)
{
    List* list = (List*)malloc(sizeof(List));
    scanf("%d",&(list->len));
    for(int i=0;ilen;i++)
    {
        int cent;
        scanf("%d",¢);
        list->data[i] = cent;
    }
    int min;
    int max;
    scanf("%d",&min);
    scanf("%d",&max);
list = Delete_list(list,min,max);
show(list);

return 0;
}
///////////////////////////////
List* Delete_list(List* p,int min,int max){
    List* s = (List*)malloc(sizeof(List));
    int j=0;
for(int i=0;ilen;i++)
{
    if(p->data[i]data[i]>max){
        s->data[j] = p->data[i];
        j++;
        s->len++;
    }

}
  return s;
}

show(List* p){
for(int i=0;ilen-1;i++)
    {
        printf("%d ",p->data[i]);
    }
printf("%d",p->data[p->len-1]);
}