#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
struct SqList {
ElementType *Data;
int N; /*N为表中元素个数*/
int MaxSize;/*表的最大容量*/
};
struct SqList *CreateList(int M) {
struct SqList *L;
L = (struct SqList *) malloc(sizeof(struct SqList));
if (L == NULL) {
return NULL;
}
L->Data = (ElementType *) malloc(sizeof(ElementType) * M);
if (L->Data == NULL) {
return NULL;
}
L->N = 0;/*初始时元素个数为0*/
L->MaxSize = M;
return L;
}
int Find(struct SqList *L, ElementType X) {
if (L == NULL) {
return 0;
}
for (int i = 0; i < L->N; i++) {
if (L->Data[i] == X) {
return i + 1;
}
}
return 0;/*如果没找到,返回-1*/
}
void Insert(struct SqList *L, int i, ElementType X) {
if (L == NULL) {
return;
}
if (L->N == L->MaxSize) {
printf("List full.\n");
return;
}
if (i < 1 || i > L->N + 1) {
printf("illegal i\n");
return;
}
for (int j = L->N - 1; j >= i - 1; j--) {
L->Data[j + 1] = L->Data[j];
}
L->Data[i - 1] = X;
L->N++;
}
void Delete(struct SqList *L, int i) {
if (L == NULL) {
return;
}
if (i < 1 || i > L->N) {
printf("illegal i\n");
return;
}
for (int j = i; j <= L->N - 1; j++) {
L->Data[j - 1] = L->Data[j];
}
L->N--;
}
void PrintList(struct SqList *L) {
if (L == NULL) {
printf("List iS NULL\n");
return;
}
printf("[");
for (int i = 0; i < L->N; ++i) {
if (i == L->N - 1) {
printf("%d", L->Data[i]);
} else {
printf("%d, ", L->Data[i]);
}
}
printf("]\n");
}
int main(void) {
struct SqList *L = CreateList(10);
for (int i = 0; i < 5; ++i) {
L->Data[i] = i * 2;
L->N++;
}
PrintList(L);
int index = Find(L, 4);
Insert(L, index, 14);
PrintList(L);
Delete(L, Find(L, 4));
PrintList(L);
free(L);
return 0;
}