-
-
-public class Liste extends Structure {
-
- private class IntNode {
- private int data;
- private IntNode next;
-
- IntNode(int value) {
- setData(value);
- setNext(null);
- }
-
- IntNode(int value, IntNode nextNode) {
- setData(value);
- setNext(nextNode);
- }
-
- public int getData() {
- return data;
- }
-
- public void setData(int value) {
- data = value;
- }
-
- public IntNode getNext() {
- return next;
- }
-
- public void setNext(IntNode nextNode) {
- next = nextNode;
- }
-
- }
-
- private IntNode headNode;
- private int list_counter;
-
- Liste() {
- setHeadNode(null);
- setSize(0);
- }
-
- private boolean isEmpty()
- {
- return getHeadNode() == null;
- }
-
- public int getSize() {
- return list_counter;
- }
-
- public void setSize(int size) {
- list_counter = size;
- }
-
- public void setHeadNode(IntNode node) {
- headNode = node;
- }
-
- public IntNode getHeadNode() {
- return headNode;
- }
-
- public boolean inserer(int value) {
- boolean found = false;
- if (isEmpty()) {
- headNode = new IntNode(value);
- list_counter++;
- return true;
- } else if (value == headNode.getData()) {
- found = true;
- return true;
- } else {
- IntNode nodeCursorNext = headNode.getNext();
- while (nodeCursorNext != null) {
- if (value == nodeCursorNext.getData()) {
- found = true;
- break;
- } else {
- nodeCursorNext = nodeCursorNext.getNext();
- }
- }
- if (!found) {
- headNode = new IntNode(value, headNode);
- list_counter++;
- }
- // Insertion in a linked list can't fail
- return true;
- }
- }
-
- public boolean supprimer(int value) {
- boolean deleted = false;
- if (isEmpty()) {
- return deleted;
- } else if (value == headNode.getData()) {
- headNode = headNode.getNext();
- deleted = true;
- list_counter--;
- } else {
- IntNode nodeCursor = headNode;
- IntNode nodeCursorNext = headNode.getNext();
- while (nodeCursorNext != null) {
- if (value == nodeCursorNext.getData()) {
- nodeCursor.setNext(nodeCursorNext.getNext());
- deleted = true;
- list_counter--;
- break;
- } else {
- nodeCursor = nodeCursorNext;
- nodeCursorNext = nodeCursorNext.getNext();
- }
- }
- }
- return deleted;
- }
-
- 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 " + 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() || 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());
- }
- }
-
-}