#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct SqList {
ElemType *data;
int length;
} SqList;
int InitSqList(SqList *sqlist) {
sqlist->data = (SqList *) malloc(MAXSIZE * sizeof(ElemType));
}
int Length(SqList sqlist) {
return sqlist.length;
}
int LocateElem(SqList sqlist, ElemType e) {
for (int i = 0; i < sqlist.length; i++) {
if (sqlist.data[i] == e)return i;
}
return -1;
}
ElemType GetElem(SqList sqlist, int index) {
if (index < 0 || index > sqlist.length - 1 || index >= MAXSIZE)return -1;
return sqlist.data[index];
}
int ListInsert(SqList *sqlist, int index, ElemType e) {
if (index < 0 || index > sqlist->length || sqlist->length >= MAXSIZE)return -1;
for (int i = sqlist->length - 1; i > index; i--) {
sqlist->data[i + 1] = sqlist->data[i];
}
sqlist->data[index] = e;
sqlist->length++;
return 0;
}
int ListDelete(SqList *sqlist, int index) {
if (index < 0 || index >= sqlist->length || sqlist->length >= MAXSIZE || sqlist->length == 0)return -1;
for (int i = index; i < sqlist->length - 1; i++) {
sqlist->data[i] = sqlist->data[i + 1];
}
sqlist->length--;
return 0;
}
int PrintList(SqList sqlist) {
if (sqlist.length <= 0)return -1;
for (int i = 0; i < sqlist.length; i++) {
printf("%d ", sqlist.data[i]);
}
return 0;
}
int Empty(SqList sqlist) {
if (sqlist.length == 0)return 1;
else return 0;
}
int Destroy(SqList *sqlist) {
sqlist->length = 0;
if (sqlist->data != NULL)free(sqlist->data);
if (sqlist->data == NULL)return 1;
else return 0;
}
int main(void) {
SqList sqlist;
InitSqList(&sqlist);
printf("\n%d\n", Empty(sqlist));
for (int i = 0; i < 10; ++i) {
ListInsert(&sqlist, i, i * i);
}
printf("\n%d\n\n", Empty(sqlist));
printf("\n");
PrintList(sqlist);
printf("\n");
ListInsert(&sqlist, 5, 123);
printf("GetElem(sqlist,5):%d\n", GetElem(sqlist, 5));
PrintList(sqlist);
printf("\n");
ListDelete(&sqlist, 5);
PrintList(sqlist);
printf("\n");
printf("%d\n", Length(sqlist));
Destroy(&sqlist);
printf("\n%d\n\n", Empty(sqlist));
return 0;
}