From 9d853de0f505dca3d0fb5030c26d6b75c5232750 Mon Sep 17 00:00:00 2001 From: Abivarman <abivarman.kandiah@etu.hesge.ch> Date: Thu, 24 Feb 2022 10:41:52 +0100 Subject: [PATCH] Add vector remove --- header/vectors.h | 1 + src/test_vectors.c | 17 ++++++++++++++--- src/vectors.c | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/header/vectors.h b/header/vectors.h index 0fa1a47..b94c944 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 960ea89..371d5ee 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 0a43638..5e564dd 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 -- GitLab