#include #include typedef struct { int *arr; int max_size; int cur_size; } vector_t; vector_t vector_init(int size){ vector_t vec; vec.max_size = size; vec.arr = malloc(sizeof(int)*vec.max_size); vec.cur_size = 0; return vec; } int size(vector_t vec){ return vec.cur_size; } int capacity(vector_t vec){ return vec.max_size; } int is_empty(vector_t vec){ if (vec.cur_size == 0){ return 1; } return 0; } int is_full(vector_t vec){ if (vec.cur_size >= vec.max_size){ return 1; } return 0; } int at(vector_t vec, int index){ if (index >= vec.max_size){ printf("Index out of bound!!\n"); exit(1); } return vec.arr[index]; } void push(vector_t *vec, int value){ if (is_full(*vec)){ printf("Array out of Size!!\n\ Can't push!! \n\ Not yet implemented resize!!\n"); exit(1); } vec->arr[vec->cur_size] = value; vec->cur_size++; } void insert(vector_t *vec, int index, int val){ if (is_full(*vec)){ printf("Array out of Size!!\n\ Can't insert!\n\ Not yet implemented resize!!\n"); exit(1); } int tmp; for (int i = index; i <= vec->cur_size; i++){ tmp = val; val = vec->arr[i]; vec->arr[i] = tmp; } vec->cur_size += 1; } void print_vec(vector_t vec){ printf("["); for (int i = 0; i < vec.cur_size; i++){ printf("%d ", vec.arr[i]); } printf("]\n"); } void destroy_vec(vector_t *vec){ free(vec->arr); } int main(void){ vector_t vec = vector_init(16); printf("The size of the vector is %d.\n", size(vec)); printf("The capacity of the vector is %d.\n", capacity(vec)); printf("is_empty returns: %d.\n", is_empty(vec)); push(&vec, 10); push(&vec, 20); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); push(&vec, 30); printf("-----\n"); printf("The size of the vector is %d.\n", size(vec)); printf("The first element of the vector is %d.\n", at(vec, 0)); printf("is_empty returns: %d.\n", is_empty(vec)); print_vec(vec); destroy_vec(&vec); return 0; }