OJ顺序表插入元素本地过了OJ报错,求各位帮我找找疏漏之处
这是OJ问题描述
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define ERROR -1
#define OK 1
#define LISTSIZE 102
typedef int status;
typedef int elementtype;
typedef struct sqlist
{
elementtype* data[LISTSIZE];
int len;
}sqlist;
status initlist(sqlist* L)
{
L->len = 0;
return OK;
}
status getlist(sqlist* L)
{
int i = 0;
int j = 0, state=2;
char c = getchar();
while (isdigit(c))
{
state = 0;
L->data[i] = c - '0' + j;
j = (L->data[i]);
j *= 10;
while ((c = getchar()) == ' ' || c == '\t')
state = 1;
i += state;
L->len += state;
j *= (1 - state);
}
if(state!=2)
L->len++;
return OK;
}
status insert_sqlist(sqlist* va, int x)
{
int i;
if (va->len + 1 > LISTSIZE)
return ERROR;
va->len++;
for (i = va->len - 1; va->data[i] > x && i >= 0; i--)
va->data[i + 1] = va->data[i];
va->data[i + 1] = x;
return OK;
}
main()
{
sqlist va;
int i, x;
initlist(&va);
getlist(&va);
scanf_s("%d", &x);
insert_sqlist(&va, x);
for (i = 0; i < va.len; i++)
printf("%d ", va.data[i]);
//printf("\n");
}
运行结果
可见一般情况和顺序表为空的情况都没有问题
之前发现输入顺序表正好为LISTSIZE或LISTSIZE-1时会出错,所以把LISTSIZE改为102,OJ依然显示答案错误
我真的不知道自己错在哪里了,烦请各位大师帮忙555