#include <stdio.h>
#include "windows.h"
typedef int E;
struct List {
E *array;
int capacity;
int size;
};
typedef struct List *ArrayList;
BOOL initList(ArrayList list) {
list->array = malloc(sizeof(E) * 10);
if (list->array == NULL) return 0;
list->capacity = 10;
list->size = 0;
return 1;
}
void dilatation(ArrayList list) {
int newCapacity = list->capacity * 2;
int *Array = realloc(list, newCapacity * sizeof(E));
if (Array == NULL) printf("自动扩展失败");
list->array = Array;
list->capacity = newCapacity;
}
BOOL insetList(ArrayList list, E element, int index) {
if (index < 0 || index > list->size) return FALSE;
if (index >= list->capacity) dilatation(list);
for (int i = list->size; i > index - 1; --i) {
if (i == index) {
list->array[i] = element;
list->size++;
} else {
list->array[i] = list->array[i - 1];
}
}
return TRUE;
}
BOOL delList(ArrayList list,int index) {
if (index < 0 || index > list->size-1) return FALSE;
for (int i = index; i < list->size-1; ++i) {
list->array[i] = list->array[i+1];
}
list->size--;
return TRUE;
}
int sizeList(ArrayList list){
return list->size;
}
E * getList(ArrayList list,int index){
if (index < 0 || index > list->size-1) return NULL;
return &list->array[index];
}
int findList(ArrayList list,E element){
for (int i = 0; i < list->size; ++i) {
if (list->array[i] == element) return i;
}
return -1;
}
void f(ArrayList list){
for (int i = 0; i < list->size; ++i) {
printf("%d ",list->array[i]);
}
printf("\n");
}
int main() {
SetConsoleOutputCP(65001);
struct List list;
if (initList(&list)) {
insetList(&list,5,0);
insetList(&list,4,0);
insetList(&list,3,0);
insetList(&list,2,0);
insetList(&list,1,0);
f(&list);
printf("%d\n",sizeList(&list));
delList(&list,0);
f(&list);
int a = *getList(&list,3);
printf("%d\n",sizeList(&list));
printf("3的index:%d", findList(&list,3));
} else {
printf("初始化失败,内存空间不足");
}
}