Fix the Compactable implementation in Entiers and Listes classes.
[TP_POO.git] / TP2 / Liste.java
index 4ead214c512edb513a900572095685bb34baa334..ceab4993c1f80e4da6edc998b99c0d10ffe1a6dc 100644 (file)
@@ -119,25 +119,45 @@ 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 != null && headNode.getNext() == null) {
+            headNode = null;
+        } else {
+            // We have at least 2 nodes in the linked list
+            IntNode nodeCursor = headNode;
+            int i = 0;
+            // Go to the node at the nElements place
+            while (i < nElements -1 && nodeCursor.getNext() != null && nElements > 1) {
+                nodeCursor = nodeCursor.getNext();
+                i++;
+            }
+            // Set the nElements + 1 node as the root node
+            // It might be null
+            setHeadNode(nodeCursor.getNext());
+        }
     }
 
 }