// // Created by Lennart on 02/12/2023. // #ifndef ADVENT_OF_CODE_2023_ARRAY_LIST_H #ifndef ELEMENT_TYPE #define ELEMENT_TYPE int #endif typedef struct array_list_struct { ELEMENT_TYPE *data; int capacity; int length; } array_list; array_list* alist_create(int capacity); void alist_add(array_list *alist, ELEMENT_TYPE entry); void alist_free(array_list *alist); #define ADVENT_OF_CODE_2023_ARRAY_LIST_H #endif //ADVENT_OF_CODE_2023_ARRAY_LIST_H //#define ARRAY_LIST_IMPLEMENTATION #ifdef ARRAY_LIST_IMPLEMENTATION array_list* alist_create(int capacity) { array_list *alist = malloc(sizeof (struct array_list_struct)); alist->data = malloc(sizeof (ELEMENT_TYPE) * capacity); alist->capacity = capacity; alist->length = 0; return alist; } void alist_add(array_list *alist, ELEMENT_TYPE entry) { if(alist->length >= alist->capacity) { alist->data = realloc(alist->data, alist->capacity * 2); alist->capacity = alist->capacity * 2; } alist->data[alist->length++] = entry; } void alist_free(array_list *alist) { free(alist->data); free(alist); } #endif //ARRAY_LIST_IMPLEMENTATION