Add the Compactable interface.
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 4 Mar 2018 16:38:43 +0000 (17:38 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 4 Mar 2018 16:38:43 +0000 (17:38 +0100)
Need testing.

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
Entiers/Entiers.java
Listes/Liste.java
Structure/Entiers.java
Structure/Liste.java
TP2/Entiers.java
TP2/Image.java
TP2/Liste.java

index 4f1168ecad39fa68f87e52aee552e576ad7b4b43..c878f631f68df145245bfd0a76ced4fef095a790 100644 (file)
@@ -60,7 +60,7 @@ class Entiers {
 
     private int binarySearch(int first, int last, int value) {
         if (last < first)
-            //FIXME: should not return an integer 
+            //FIXME: should not return an integer
             return -1;
         int middle = (first + last) / 2;
         if (value == int_array[middle])
@@ -98,7 +98,8 @@ class Entiers {
     }
 
     public void afficher() {
-        System.out.println("----");
+        String className = this.getClass().getSimpleName();
+        System.out.println("---- " + className + " ----");
         for (int i = 0; i < getCurrentSize(); i++) {
             System.out.println("element " + i + " " + int_array[i]);
         }
index 167a79d34507a8ff2079ea33f8ac00b9d39afa5a..ca2d42d96920de9eea6647d88bf3eba71f80158d 100644 (file)
@@ -116,20 +116,22 @@ public class Liste {
     }
 
     public void afficher() {
-        System.out.println("----");
+        String className = this.getClass().getSimpleName();
+        int i = 0;
+        System.out.println("---- " + className + " ----");
         if (isEmpty()) {
-            System.out.println("Liste vide");
+            return;
         } else if (headNode.getNext() == null) {
-            System.out.println("Valeur du noeud 0 : " + headNode.getData());
+            System.out.println("element " + i + " : " + headNode.getData());
         } else {
-            IntNode nodeCursor = headNode;
-            int i = 0;
-            while (nodeCursor.getNext() != null) {
-                System.out.println("Valeur du noeud " + i + " : " + nodeCursor.getData());
-                nodeCursor = nodeCursor.getNext();
+            IntNode nodeCursorNext = headNode.getNext();
+            System.out.println("element " + i + " : " + headNode.getData());
+            i++;
+            while (nodeCursorNext != null) {
+                System.out.println("element " + i + " : " + nodeCursorNext.getData());
+                nodeCursorNext = nodeCursorNext.getNext();
                 i++;
             }
-            System.out.println("Valeur du noeud " + i++ + " : " + nodeCursor.getData());
         }
     }
 
index b4cffb15f6f90406be47212e9f9dede7a02f1e66..80fcc9016434b0b5ec16c3f946c1999e37097fa3 100644 (file)
@@ -60,7 +60,7 @@ class Entiers extends Structure {
 
     private int binarySearch(int first, int last, int value) {
         if (last < first)
-            //FIXME: should not return an integer 
+            //FIXME: should not return an integer
             return -1;
         int middle = (first + last) / 2;
         if (value == int_array[middle])
@@ -98,7 +98,8 @@ class Entiers extends Structure {
     }
 
     public void afficher() {
-        System.out.println("---- entiers ----");
+        String className = this.getClass().getSimpleName();
+        System.out.println("---- " + className + " ----");
         for (int i = 0; i < getCurrentSize(); i++) {
             System.out.println("element " + i + " : " + int_array[i]);
         }
index da22d8afa47ba9d7a5b021009acde7a4c2e9058e..448878f8c63d4eea071132881798b8ab1233bd94 100644 (file)
@@ -118,20 +118,22 @@ public class Liste extends Structure {
     }
 
     public void afficher() {
-        System.out.println("---- liste ----");
+        String className = this.getClass().getSimpleName();
+        int i = 0;
+        System.out.println("---- " + className + " ----");
         if (isEmpty()) {
             return;
         } else if (headNode.getNext() == null) {
-            System.out.println("element 0 : " + headNode.getData());
+            System.out.println("element " + i + " : " + headNode.getData());
         } else {
-            IntNode nodeCursor = headNode;
-            int i = 0;
-            while (nodeCursor.getNext() != null) {
-                System.out.println("element " + i + " : " + nodeCursor.getData());
-                nodeCursor = nodeCursor.getNext();
+            IntNode nodeCursorNext = headNode.getNext();
+            System.out.println("element " + i + " : " + headNode.getData());
+            i++;
+            while (nodeCursorNext != null) {
+                System.out.println("element " + i + " : " + nodeCursorNext.getData());
+                nodeCursorNext = nodeCursorNext.getNext();
                 i++;
             }
-            System.out.println("element " + i++ + " : " + nodeCursor.getData());
         }
     }
 
index a1e18b64911ed78cc45b4dcf8bcdc6ef348b9870..7d55c4264a81aead1a278a11ed0549e90dbd0b7c 100644 (file)
@@ -75,7 +75,6 @@ class Entiers extends Structure {
             System.out.println("Aucune valeur à supprimer");
             return false;
         }
-
         for (int i = 0; i < getCurrentSize(); i++) {
             if (int_array[i] == value) {
                 // Deleting the element in the tab
@@ -106,7 +105,8 @@ class Entiers extends Structure {
     }
 
     public void compacter(int nElements) {
-
+        // Remove the last nElements
+        current_size -= nElements;
     }
 
 }
index 5385626a79099f2b5e72ee675c82ef1a65acb273..62a710ca5a3c64d9f347ff1127fe5f2a2a70b8d7 100644 (file)
@@ -46,6 +46,18 @@ class Image extends Forme implements Compactable {
         return rtVal;
     }
 
+    public boolean supprimer(int index) {
+        boolean rtVal = false;
+        if (!isEmpty()) {
+            for (int j = index; (j < formeNumber - 1 && index < formeNumber); j++) {
+                formeCollection[j] = formeCollection[j + 1];
+            }
+            rtVal = true;
+            formeNumber--;
+        }
+        return rtVal;
+    }
+
     public void afficher() {
         for (int i = 0; i < formeNumber; i++) {
             formeCollection[i].afficher();
@@ -53,7 +65,9 @@ class Image extends Forme implements Compactable {
     }
 
     public void compacter(int nElements) {
-
+        for (int i = formeNumber - 1; (i > formeNumber - nElements && !isEmpty()); i--) {
+            supprimer(i);
+        }
     }
 
 }
index 4ead214c512edb513a900572095685bb34baa334..201d8750af17c7f0110e8bc852811ed446fea0c7 100644 (file)
@@ -119,25 +119,44 @@ public class Liste extends Structure {
 
     public void afficher() {
         String className = this.getClass().getSimpleName();
+        int i = 0;
         System.out.println("---- " + className + " ----");
         if (isEmpty()) {
             return;
         } else if (headNode.getNext() == null) {
-            System.out.println("element 0 : " + headNode.getData());
+            System.out.println("element " + i + " : " + headNode.getData());
         } else {
-            IntNode nodeCursor = headNode;
-            int i = 0;
-            while (nodeCursor.getNext() != null) {
-                System.out.println("element " + i + " : " + nodeCursor.getData());
-                nodeCursor = nodeCursor.getNext();
+            IntNode nodeCursorNext = headNode.getNext();
+            System.out.println("element " + i + " : " + headNode.getData());
+            i++;
+            while (nodeCursorNext != null) {
+                System.out.println("element " + i + " : " + nodeCursorNext.getData());
+                nodeCursorNext = nodeCursorNext.getNext();
                 i++;
             }
-            System.out.println("element " + i++ + " : " + nodeCursor.getData());
         }
     }
 
     public void compacter(int nElements) {
-
+        // Remove the first nElements
+        if (isEmpty()) {
+            return;
+        } else if (nElements == 0) {
+            return;
+        } else if (headNode.getNext() == null) {
+            headNode = null;
+        } else {
+            // We have at least 2 nodes in the linked list
+            IntNode nodeCursor = headNode.getNext();
+            int i = 0;
+            // Go to the node at the nElements + 1 place
+            while (i < nElements - 1 && nodeCursor.getNext() != null) {
+                nodeCursor = nodeCursor.getNext();
+                i++;
+            }
+            // Set the nElements + 1 node as the root node
+            setHeadNode(nodeCursor);
+        }
     }
 
 }