diff --git a/vector.c b/vector.c index 34e3cab033a86b99146ccc339112b13fdb20cfe2..b48e35d67b4f5cfdb75e4b649e99e285125e7477 100644 --- a/vector.c +++ b/vector.c @@ -48,7 +48,7 @@ void vector_push(vector *v, type item) void vector_pop(vector *v, type item) { assert(v->length>0); - if (v->length-1 == v->capacity/2) + if (v->length-1 == v->capacity/4) { v->capacity /=2; v->data = realloc(v->data, v->capacity * sizeof(type)); @@ -104,9 +104,11 @@ void vector_insert(vector *v, type element, int index) void vector_empty(vector *v) { - free(v->data); - vector v2 = vector_create(); - v = &v2; + for (int i = v->length; i > 0; i--) + { + vector_remove(v, i); + } + v->data = realloc(v->data, VECTOR_INIT_CAPACITY * sizeof(type)); } void vector_free(vector *v) @@ -123,7 +125,7 @@ void vector_print(vector *v, void (*print)(type)) print(v->data[i]); printf(","); } - printf("]"); + printf("]\n"); } vector vector_map(vector *v, type (*f)(type))