Add the Compactable interface.
[TP_POO.git] / Listes / Liste.java
CommitLineData
357ec4fe 1
f1af4106 2
aac9e71b 3public class Liste {
f1af4106 4
aac9e71b
JB
5 private class IntNode {
6 private int data;
7 private IntNode next;
f1af4106 8
aac9e71b
JB
9 IntNode(int value) {
10 setData(value);
11 setNext(null);
12 }
f1af4106 13
aac9e71b
JB
14 IntNode(int value, IntNode nextNode) {
15 setData(value);
16 setNext(nextNode);
17 }
f1af4106 18
aac9e71b
JB
19 private int getData() {
20 return data;
21 }
f1af4106 22
aac9e71b
JB
23 private void setData(int value) {
24 data = value;
25 }
f1af4106 26
aac9e71b
JB
27 private IntNode getNext() {
28 return next;
29 }
f1af4106 30
aac9e71b
JB
31 private void setNext(IntNode nextNode) {
32 next = nextNode;
33 }
34
35 }
f1af4106 36
f1af4106 37 private IntNode headNode;
357ec4fe 38 private int list_counter;
357ec4fe
JB
39
40 Liste() {
130dab91 41 setHeadNode(null);
f1af4106
JB
42 setSize(0);
43 }
357ec4fe 44
f1af4106
JB
45 private boolean isEmpty()
46 {
d7dd93e3 47 return getHeadNode() == null;
357ec4fe
JB
48 }
49
50 private int getSize() {
51 return list_counter;
52 }
53
f1af4106
JB
54 private void setSize(int size) {
55 list_counter = size;
56 }
57
130dab91 58 private void setHeadNode(IntNode node) {
f1af4106
JB
59 headNode = node;
60 }
357ec4fe 61
130dab91 62 private IntNode getHeadNode() {
f1af4106
JB
63 return headNode;
64 }
65
66 public void inserer(int value) {
684b6099 67 boolean found = false;
f1af4106
JB
68 if (isEmpty()) {
69 headNode = new IntNode(value);
70 list_counter++;
71 return;
684b6099
JB
72 } else if (value == headNode.getData()) {
73 found = true;
f1af4106
JB
74 return;
75 } else {
f1af4106
JB
76 IntNode nodeCursorNext = headNode.getNext();
77 while (nodeCursorNext != null) {
684b6099
JB
78 if (value == nodeCursorNext.getData()) {
79 found = true;
f1af4106
JB
80 break;
81 } else {
f1af4106
JB
82 nodeCursorNext = nodeCursorNext.getNext();
83 }
84 }
684b6099
JB
85 if (!found) {
86 headNode = new IntNode(value, headNode);
f1af4106
JB
87 list_counter++;
88 }
89 }
357ec4fe
JB
90 }
91
92 public boolean supprimer(int value) {
f1af4106
JB
93 boolean deleted = false;
94 if (isEmpty()) {
95 return deleted;
96 } else if (value == headNode.getData()) {
97 headNode = headNode.getNext();
98 deleted = true;
99 list_counter--;
100 } else {
101 IntNode nodeCursor = headNode;
102 IntNode nodeCursorNext = headNode.getNext();
103 while (nodeCursorNext != null) {
104 if (value == nodeCursorNext.getData()) {
105 nodeCursor.setNext(nodeCursorNext.getNext());
106 deleted = true;
107 list_counter--;
108 break;
109 } else {
110 nodeCursor = nodeCursorNext;
111 nodeCursorNext = nodeCursorNext.getNext();
112 }
113 }
114 }
115 return deleted;
116 }
117
118 public void afficher() {
5731ae5f
JB
119 String className = this.getClass().getSimpleName();
120 int i = 0;
121 System.out.println("---- " + className + " ----");
f1af4106 122 if (isEmpty()) {
5731ae5f 123 return;
f1af4106 124 } else if (headNode.getNext() == null) {
5731ae5f 125 System.out.println("element " + i + " : " + headNode.getData());
f1af4106 126 } else {
5731ae5f
JB
127 IntNode nodeCursorNext = headNode.getNext();
128 System.out.println("element " + i + " : " + headNode.getData());
129 i++;
130 while (nodeCursorNext != null) {
131 System.out.println("element " + i + " : " + nodeCursorNext.getData());
132 nodeCursorNext = nodeCursorNext.getNext();
f1af4106
JB
133 i++;
134 }
f1af4106
JB
135 }
136 }
137
138 public static void main(String[] args) {
139 Liste LinkedList = new Liste();
140
141 LinkedList.inserer(2);
142 LinkedList.inserer(1);
143 LinkedList.inserer(4);
144 LinkedList.afficher();
145 System.out.println("Taille de la liste : " + LinkedList.getSize());
146
147 LinkedList.inserer(2);
148 LinkedList.inserer(10);
149 LinkedList.inserer(0);
150 LinkedList.afficher();
151 System.out.println("Taille de la liste : " + LinkedList.getSize());
357ec4fe 152
f1af4106
JB
153 LinkedList.supprimer(4);
154 LinkedList.afficher();
155 System.out.println("Taille de la liste : " + LinkedList.getSize());
156 LinkedList.supprimer(0);
157 LinkedList.afficher();
158 System.out.println("Taille de la liste : " + LinkedList.getSize());
159 LinkedList.supprimer(0);
160 LinkedList.afficher();
161 System.out.println("Taille de la liste : " + LinkedList.getSize());
162 LinkedList.supprimer(10);
163 LinkedList.afficher();
164 System.out.println("Taille de la liste : " + LinkedList.getSize());
357ec4fe
JB
165 }
166
167}