#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define InitialSize 20
typedef struct SqList {
int* data;
int length;
int MaxSize;
} SqList;
bool InitialList(SqList* L) {
L->data = (int*)malloc(sizeof(int) * InitialSize);
L->length = 0;
L->MaxSize = InitialSize;
return true;
}
bool CreaseListSize(SqList* L, int len) {
int* p = L->data;
L->data = (int*)malloc(sizeof(int) * (L->MaxSize + len));
for (int i = 0; i < L->length; i++) {
L->data[i] = p[i];
}
L->MaxSize += len;
free(p);
return true;
}
bool InsertList(SqList* L, int i, int e) {
if (i < 1 || i > L->length + 1)
return false;
if (L->length == L->MaxSize) {
CreaseListSize(L, InitialSize);
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return true;
}
bool DeleteList(SqList* L, int i) {
if (i < 1 || i > L->length)
return false;
if (L->length == 0)
return false;
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return true;
}
int GetElem(SqList L, int i) {
if (i < 1 || i > L.length) {
printf("位序错误");
return -1;
}
return L.data[i - 1];
}
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("\n");
}
int main() {
SqList L;
bool success;
success = InitialList(&L);
if (!success) {
printf("初始化失败\n");
return 0;
}
for (int i = 1; i <= 10; i++) {
InsertList(&L, i, i);
}
PrintList(L);
DeleteList(&L, 5);
PrintList(L);
int element = GetElem(L, 3);
printf("第三个元素是:%d\n", element);
return 0;
}