TP2: Add code skeleton for 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() {
fe44e32c 119 System.out.println("----");
f1af4106
JB
120 if (isEmpty()) {
121 System.out.println("Liste vide");
122 } else if (headNode.getNext() == null) {
123 System.out.println("Valeur du noeud 0 : " + headNode.getData());
124 } else {
125 IntNode nodeCursor = headNode;
126 int i = 0;
127 while (nodeCursor.getNext() != null) {
128 System.out.println("Valeur du noeud " + i + " : " + nodeCursor.getData());
129 nodeCursor = nodeCursor.getNext();
130 i++;
131 }
132 System.out.println("Valeur du noeud " + i++ + " : " + nodeCursor.getData());
133 }
134 }
135
136 public static void main(String[] args) {
137 Liste LinkedList = new Liste();
138
139 LinkedList.inserer(2);
140 LinkedList.inserer(1);
141 LinkedList.inserer(4);
142 LinkedList.afficher();
143 System.out.println("Taille de la liste : " + LinkedList.getSize());
144
145 LinkedList.inserer(2);
146 LinkedList.inserer(10);
147 LinkedList.inserer(0);
148 LinkedList.afficher();
149 System.out.println("Taille de la liste : " + LinkedList.getSize());
357ec4fe 150
f1af4106
JB
151 LinkedList.supprimer(4);
152 LinkedList.afficher();
153 System.out.println("Taille de la liste : " + LinkedList.getSize());
154 LinkedList.supprimer(0);
155 LinkedList.afficher();
156 System.out.println("Taille de la liste : " + LinkedList.getSize());
157 LinkedList.supprimer(0);
158 LinkedList.afficher();
159 System.out.println("Taille de la liste : " + LinkedList.getSize());
160 LinkedList.supprimer(10);
161 LinkedList.afficher();
162 System.out.println("Taille de la liste : " + LinkedList.getSize());
357ec4fe
JB
163 }
164
165}