From 4217b12806c8e9c64bf0b6453e57718b098f52fb Mon Sep 17 00:00:00 2001
From: david <david@lipn.fr>
Date: Mon, 9 Sep 2019 13:47:15 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20des=20fonctions=20d'augmentation=20et?=
 =?UTF-8?q?=20de=20r=C3=A9duction?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 TP1/C/Makefile    |  2 +-
 TP1/C/arraylist.c | 24 ++++++++++++++++--------
 TP1/C/arraylist.h | 17 +++++++++++++++--
 3 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/TP1/C/Makefile b/TP1/C/Makefile
index fff4771..cc6cead 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 20d2d6c..f77a800 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 4d4f8a1..26dd805 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
  
-- 
GitLab