-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRingliste.java
74 lines (62 loc) · 1.76 KB
/
Ringliste.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public class Ringliste {
private Knoten first;
public Ringliste(Person[] pPersonen) {
// ADD PERSONS
for (Person p : pPersonen) {
this.add(p);
}
// GET LAST
Knoten tmp = first;
while (tmp.getNachfolger() != null) {
tmp = tmp.getNachfolger();
}
tmp.setNachfolger(first);
}
// ADD ENTRIES (USE ONLY ONCE)
private void add(Person pPerson) {
if (first == null) {
first = new Knoten(pPerson);
return;
}
Knoten tmp = first;
while (tmp.getNachfolger() != null) {
tmp = tmp.getNachfolger();
}
tmp.setNachfolger(new Knoten(pPerson));
}
// Löscht
public Knoten remove(Knoten kn1, Knoten kn2) {
System.out.println(kn2.getInhalt().getName() + " ist raus!");
kn1.setNachfolger(kn2.getNachfolger());
return kn1.getNachfolger();
}
// spiel
public void spiel(int pN) {
Knoten tmp = first;
// nur noch einer da ist, der sich selbst als Nachfolger hat
while (tmp.getNachfolger() != tmp) {
for (int i = 1; i < pN - 1; i++) {
tmp = tmp.getNachfolger();
}
if (pN == 1) {
while (tmp.getNachfolger() != first) {
System.out.println(tmp.getInhalt().getName() + " ist raus!");
tmp = tmp.getNachfolger();
}
this.announceWinner(tmp);
return;
}
// this.remove(tmp, tmp.getNachfolger());
tmp = this.remove(tmp, tmp.getNachfolger());
}
// Der Gewinner: (letztes verbl. Elem. (hat sich selbst als Nachfolger))
this.announceWinner(tmp);
}
public void announceWinner(Knoten winner) {
System.out.println();
System.out.println("---------------------->> Gewinner <<----------------------");
System.out.println("Der Gewinner ist... (*Trommelwirbel*)");
System.out.println(winner.getInhalt().getName() + "!");
System.out.println("---------------------->> Gewinner <<----------------------");
}
}