Fix the Compactable implementation in Entiers and Listes classes.
[TP_POO.git] / TP2 / Liste.java
index b31d0816218f2db6028c5edf8ff4ac14a5392852..ceab4993c1f80e4da6edc998b99c0d10ffe1a6dc 100644 (file)
@@ -118,20 +118,45 @@ 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()) {
-            System.out.println("Liste vide");
+            return;
         } else if (headNode.getNext() == null) {
-            System.out.println("element 0 : " + headNode.getData());
+            System.out.println("element " + i + " : " + headNode.getData());
         } else {
+            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++;
+            }
+        }
+    }
+
+    public void compacter(int nElements) {
+        // Remove the first nElements
+        if (isEmpty()) {
+            return;
+        } else if (nElements == 0) {
+            return;
+        } else if (headNode != null && headNode.getNext() == null) {
+            headNode = null;
+        } else {
+            // We have at least 2 nodes in the linked list
             IntNode nodeCursor = headNode;
             int i = 0;
-            while (nodeCursor.getNext() != null) {
-                System.out.println("element " + i + " : " + nodeCursor.getData());
+            // Go to the node at the nElements place
+            while (i < nElements -1 && nodeCursor.getNext() != null && nElements > 1) {
                 nodeCursor = nodeCursor.getNext();
                 i++;
             }
-            System.out.println("element " + i++ + " : " + nodeCursor.getData());
+            // Set the nElements + 1 node as the root node
+            // It might be null
+            setHeadNode(nodeCursor.getNext());
         }
     }