Add the Compactable interface.
[TP_POO.git] / TP2 / Liste.java
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);
+        }
     }
 
 }