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