diff --git a/TP1/C/Makefile b/TP1/C/Makefile
index fff477166fdfa6277158b1102b7b7a70e827c905..cc6ceadabf944913c08467faa4c7f5885fd8a430 100644
--- a/TP1/C/Makefile
+++ b/TP1/C/Makefile
@@ -1,5 +1,5 @@
 CC= gcc
-CXXFLAGS= -Wall -ansi --pedantic 
+CXXFLAGS= -Wall -ansi --pedantic -O3
 
 CPP_O_FILE = arraylist.o analyzer.o main.o
 LIB = -lm
diff --git a/TP1/C/arraylist.c b/TP1/C/arraylist.c
index 20d2d6c756bdfb8556903f0e04155c27bb12f4ab..f77a800d21c636fdf3535f4340f8755722a4bf28 100644
--- a/TP1/C/arraylist.c
+++ b/TP1/C/arraylist.c
@@ -21,10 +21,9 @@ void arraylist_destroy(arraylist_t * a){
 char arraylist_append(arraylist_t * a, int x){
   char memory_allocation = FALSE;
   if( a!=NULL ){
-    if( arraylist_enlarging_capacity(a) ){
+    if( arraylist_do_we_need_to_enlarge_capacity(a) ){
       memory_allocation = TRUE;
-      a->capacity *= 2;
-      a->data = (int *) realloc(a->data, sizeof(int) * a->capacity);
+      arraylist_enlarge_capacity(a);
     }
     a->data[a->size++] = x;
   }
@@ -34,10 +33,9 @@ char arraylist_append(arraylist_t * a, int x){
 char arraylist_pop_back(arraylist_t * a){
   char memory_reduction = FALSE;
   if( a!=NULL && a->size>0 ){
-    if( arraylist_reducing_capacity(a) ){
+    if( arraylist_do_we_need_to_reduce_capacity(a) ){
       memory_reduction = TRUE;
-      a->capacity /= 2; 
-      a->data = (int *) realloc(a->data, sizeof(int) * a->capacity);
+      arraylist_reduce_capacity(a);
     }
     a->size--;
   }
@@ -57,10 +55,20 @@ size_t arraylist_get_size(arraylist_t * a){
   return ( a!=NULL) ? a->size : -1;
 }
 
-char arraylist_enlarging_capacity(arraylist_t * a){
+char arraylist_do_we_need_to_enlarge_capacity(arraylist_t * a){
   return ( a->size >= (a->capacity * 3)/4 )? TRUE: FALSE;
 }
 
-char arraylist_reducing_capacity(arraylist_t * a){
+void arraylist_enlarge_capacity(arraylist_t * a){
+  a->capacity *= 2;
+  a->data = (int *) realloc(a->data, sizeof(int) * a->capacity);
+}
+
+char arraylist_do_we_need_to_reduce_capacity(arraylist_t * a){
   return ( a->size <= a->capacity/4 && a->size >4 )? TRUE: FALSE;
 }
+
+void arraylist_reduce_capacity(arraylist_t * a){
+  a->capacity /= 2; 
+  a->data = (int *) realloc(a->data, sizeof(int) * a->capacity);
+}
diff --git a/TP1/C/arraylist.h b/TP1/C/arraylist.h
index 4d4f8a1b5d03146d99e8c860e01bf1671790ec58..26dd8051da4ec32b8fff38f2bc0d9b618b46f907 100644
--- a/TP1/C/arraylist.h
+++ b/TP1/C/arraylist.h
@@ -77,14 +77,27 @@ size_t arraylist_get_size(arraylist_t * a);
    @param a est un pointeur vers un tableau.
    @returns VRAI si le tableau doit être agrandi, FAUX sinon.
 */
-char arraylist_enlarging_capacity(arraylist_t * a);
+char arraylist_do_we_need_to_enlarge_capacity(arraylist_t * a);
+
+/**
+   Cette fonction augmente la capacité du tableau.
+   @param a est un pointeur vers un tableau.
+*/
+void arraylist_enlarge_capacity(arraylist_t * a);
 
 /**
    Cette fonction détermine la règle selon laquelle un espace mémoire plus petit sera alloué ou non.
    @param a est un pointeur vers un tableau.
    @returns VRAI si le tableau doit être réduit, FAUX sinon.
 */
-char arraylist_reducing_capacity(arraylist_t * a);
+char arraylist_do_we_need_to_reduce_capacity(arraylist_t * a);
+
+/**
+   Cette fonction réduit la capacité du tableau.
+   @param a est un pointeur vers un tableau.
+*/
+void arraylist_reduce_capacity(arraylist_t * a);
+
 
 #endif