diff --git a/header/vectors.h b/header/vectors.h index b94c94495cc03f0f6fb297d0600eef77ee4d344f..029c4b3ce78d8f365bb9917fc3a16c46928ea071 100644 --- a/header/vectors.h +++ b/header/vectors.h @@ -26,5 +26,6 @@ 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); +void vector_insert(vector vec, type element, int index); #endif \ No newline at end of file diff --git a/src/test_vectors.c b/src/test_vectors.c index 371d5ee5579f913914c616058a3128473f154aeb..50676d2813dd78c9ab326aa20899816ff176cd1d 100644 --- a/src/test_vectors.c +++ b/src/test_vectors.c @@ -41,7 +41,12 @@ int main() vector_remove(test, 3); printf("New Value at index 3 : %d \n", vector_get(test, 3)); + //Test Vector Insert + vector_insert(test, 3, 3); + printf("New Value at index 3 and 4: %d, %d \n", vector_get(test, 3), vector_get(test, 4)); + //Test Vector Empty + return 0; } \ No newline at end of file diff --git a/src/vectors.c b/src/vectors.c index 5e564ddaad78d33dfc476966fd4853d5653f74ae..403f49e0cbc6bca2041e93b56dd8b80b291421ee 100644 --- a/src/vectors.c +++ b/src/vectors.c @@ -93,4 +93,19 @@ type vector_remove(vector vec, int index) } return tmp; +} + + +void vector_insert(vector vec, type element, int index) +{ + assert(index < vec->length); + + vec->length++; + + for (int i = vec->length; i > index; i--) // Ex : 0 1 2 {3} 4 5 // Index 3 , lenght 6 + { + vec->content[i] = vec->content[i-1]; + } + + vec->content[index] = element; } \ No newline at end of file