#include<stdio.h>
#include "define.h"
#include<stdlib.h>
#define SQLMAXSIZE 100
typedef int SqlElemType;
typedef struct __Sqlist {
SqlElemType* base;
int length;
} Sqlist;
Status InitList(Sqlist L, int length) {
scanf("%d", &L.length);
L.base = (SqlElemType*)malloc(sizeof(SqlElemType) * length);
if (length > SQLMAXSIZE)
return ERROR;
for (int i = 0; i < length; i++) {
scanf("%d", &L.base[i]);
}
return OK;
}
void DestoryList(Sqlist L) {
free(L.base);
}
Status ClearList(Sqlist L) {
if (L.length == NULL)
return TRUE;
else
return FALSE;
}
Status ListLength(Sqlist L) {
return (L.length);
}
Status GetElem(Sqlist L, int i, Status e) {
scanf("%d", &i);
if (i<1 || i>SQLMAXSIZE)
return ERROR;
e = L.base[i - 1];
return OK;
}
Status LocateElem(Sqlist L, Status e) {
scanf("%d", &e);
for (int i = 0; i < L.length; i++) {
if (L.base[i] == e)
return i + 1;
else
return 0;
}
}
Status ListInsert_Sq(Sqlist L, int i, Status e) {
scanf("%d", &i);//新位置
scanf("%d", &e);//新元素
if (i<1 || i>L.length + 1)
return ERROR;
if (L.length == SQLMAXSIZE)
return ERROR;
for (int j = L.length - 1; j >= i; j--) {
L.base[j + 1] = L.base[j];//插入位置及之后的元素后移
}
L.base[i - 1] = e;
L.length++;
return OK;
}
Status ListDelete_Sq(Sqlist L, int i) {
scanf("%d", &i);
if (i<1 || i>L.length)
return ERROR;
for (int j = i; j <= L.length - 1; j++) {
L.base[j - 1] = L.base[j];//将删除元素之后的元素前移
}
L.length--;
return OK;
}