#include #include 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 delete(vector_t *vec, int index){ if (!(index < vec->cur_size)){ printf("Invalid Index!\nFailed to Delete Element\n"); exit(-1); } int len = vec->cur_size - 1; for (int i = index; i < len; i++){ vec->arr[i] = vec->arr[i+1]; } vec->cur_size = vec->cur_size - 1; } void remove_val(vector_t *vec, int value){ int i = 0; while (i < vec->cur_size){ if (vec->arr[i] == value){ delete(vec, i); continue; } i++; } } void prepend(vector_t *vec, int value){ insert(vec, 0, value); } int pop(vector_t *vec){ // remove item at the end, return value int ret = vec->arr[vec->cur_size-1]; vec->cur_size--; return ret; } 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); }