import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Antrian antrian = new Antrian();
antrian.register("Adi", false);
antrian.register("Budi", true);
antrian.show();
System.out.print(antrian.served("Addi"));
}
}
class Antrian {
private LinkedList<String> list;
public Antrian() {
list = new LinkedList<>();
}
public String register(String nama, boolean isPriority) {
// jika prioritas, tempatkan pada antrian pertama
// jika bukan maka tempatkan pada antrian terakhir
if (isPriority) list.push(nama);
else list.add(nama);
return String.format("%s berhasil melakukan pendaftaran", nama);
}
public String served(String nama) {
if (list.contains(nama)) {
if (list.peek().equalsIgnoreCase(nama)) {
list.remove(nama);
return String.format("%s dilayani", nama);
} else {
return String.format("%s tidak dapat dilayani karena berada pada antrian ke-%d", nama, (list.indexOf(nama)+1));
}
}
return String.format("%s belum mendaftar", nama);
}
public void show() {
// tampilkan antrian
if (list.isEmpty()) {
System.out.println("Tidak ada antrian");
} else {
System.out.println("Antrian saat ini: ");
for (String nama: list) {
System.out.println(
String.format("%d. %s", list.indexOf(nama) + 1, nama)
);
}
}
}
}