diff --git a/header/vectors.h b/header/vectors.h index 0fa1a4746cef58b4b594451c8b84fd704b270099..b94c94495cc03f0f6fb297d0600eef77ee4d344f 100644 --- a/header/vectors.h +++ b/header/vectors.h @@ -25,5 +25,6 @@ void vector_push(vector vec, type element); type vector_pop(vector vec); void vector_set(vector vec, int index, type element); type vector_get(vector vec, int index); +type vector_remove(vector vec, int index); #endif \ No newline at end of file diff --git a/src/test_vectors.c b/src/test_vectors.c index 960ea8945096ad69c8ae22f0a28ef8686f3e9a58..371d5ee5579f913914c616058a3128473f154aeb 100644 --- a/src/test_vectors.c +++ b/src/test_vectors.c @@ -12,23 +12,34 @@ int main() { + //Test Vector create vector test = vector_create(); - printf("Created Vector lenght : %d \n", vector_length(test)); + //Test Vector push vector_push(test, 15); - printf("Modified Vector lenght : %d \n", vector_length(test)); + //Test Vector pop type val = vector_pop(test); - printf("Modified Vector lenght : %d and the value we popped : %d \n", vector_length(test), val); + //Test Vector set and get vector_push(test, 42); vector_set(test, 0, 69); val = vector_get(test, 0); printf("Modified Vector lenght : %d and the value we setted : %d \n", vector_length(test), val); + val = vector_pop(test); + + //Test Vector remove + for (int i = 0; i < 6; i++) + { + vector_push(test, i); + } + printf("Value at index 3 : %d \n", vector_get(test, 3)); + vector_remove(test, 3); + printf("New Value at index 3 : %d \n", vector_get(test, 3)); diff --git a/src/vectors.c b/src/vectors.c index 0a43638716878492ad2ed29832f5001624c6d170..5e564ddaad78d33dfc476966fd4853d5653f74ae 100644 --- a/src/vectors.c +++ b/src/vectors.c @@ -77,4 +77,20 @@ type vector_get(vector vec, int index) assert(index < vec->length); return vec->content[index]; +} + +type vector_remove(vector vec, int index) +{ + assert(index < vec->length); + + type tmp = vec->content[index]; + + vec->length--; + + for (int i = index; i < vec->length; i++) // Ex : 0 1 2 {3} 4 5 // Index 3 , lenght 6 + { + vec->content[i] = vec->content[i+1]; + } + + return tmp; } \ No newline at end of file