}
public void compacter(int nElements) {
- // Remove the last nElements
- current_size -= nElements;
+ if (current_size - nElements > 0) {
+ // Remove the last nElements
+ current_size -= nElements;
+ } else {
+ current_size = 0;
+ }
}
}
return;
} else if (nElements == 0) {
return;
- } else if (headNode.getNext() == null) {
+ } else if (headNode != null && headNode.getNext() == null) {
headNode = null;
} else {
// We have at least 2 nodes in the linked list
- IntNode nodeCursor = headNode.getNext();
+ IntNode nodeCursor = headNode;
int i = 0;
- // Go to the node at the nElements + 1 place
- while (i < nElements - 1 && nodeCursor.getNext() != null) {
+ // 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
- setHeadNode(nodeCursor);
+ // It might be null
+ setHeadNode(nodeCursor.getNext());
}
}
}
+ public static void main4() {
+
+ Structure[] structure = new Structure[10];
+
+ Point p1 = new Point(1, 2);
+ Point p2 = new Point(2, 7);
+ Point p3 = new Point(1, 5);
+ Point p4 = new Point(3, 1);
+
+ Segment segment1 = new Segment(p1, p2);
+ Segment segment2 = new Segment(p3, p4);
+ Cercle cercle = new Cercle(p3, 5.5);
+ Image image = new Image();
+ image.ajouter(segment1);
+ image.ajouter(segment2);
+ image.ajouter(cercle);
+
+ Entiers entiers = new Entiers(5);
+ entiers.inserer(3);
+ entiers.inserer(1);
+ entiers.inserer(4);
+
+ Liste liste = new Liste();
+ liste.inserer(3);
+ liste.inserer(1);
+ liste.inserer(5);
+ liste.inserer(4);
+
+ for (int i = 0; i < 10; i++) {
+ structure[i] = entier;
+ structure[i].afficher();
+ structure[i].compacter(1);
+ structure[i].afficher();
+
+ structure[i] = liste;
+ structure[i].afficher();
+ structure[i].compacter(1);
+ structure[i].afficher();
+
+ structure[i] = image;
+ structure[i].afficher();
+ structure[i].compacter(1);
+ structure[i].afficher();
+ }
+ }
+
public static void main(String[] args) {
- main3();
+ main4();
}