-
Notifications
You must be signed in to change notification settings - Fork 0
/
Fila.java
96 lines (82 loc) · 3.11 KB
/
Fila.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class Fila {
No inicio;
// Verificar se a Lista está vazia
public boolean listaVazia() {
return inicio == null;
}
public void inserirPaciente(Paciente paciente) {
if (paciente.corDoCartao.equals("Verde")){
pacienteVerde(paciente);
} else {
pacienteAmarelo(paciente);
}
}
//---------------------------------------------------------------------------------------------------//
// Sempre vai adicionar o paciente no fim da fila
public void pacienteVerde(Paciente paciente) {
No novoPaciente = new No(paciente);
No auxiliar = inicio;
if (listaVazia()){
novoPaciente.proximo = inicio;
inicio = novoPaciente;
} else {
while (auxiliar.proximo != null) {
auxiliar = auxiliar.proximo;
}
auxiliar.proximo = novoPaciente;
}
}
//---------------------------------------------------------------------------------------------------//
public void pacienteAmarelo(Paciente paciente){
No novoPaciente = new No(paciente);
No auxiliar = inicio;
// Se a fila estiver vazia, o Amarelo entra como sendo o primeiro
if (listaVazia()) {
novoPaciente.proximo = inicio;
inicio = novoPaciente;
}
// Se a fila NÃO estiver vazia haverá o seguintes cenários
else {
// Não existem Amarelos na Fila, então devo procurar o primeiro Verde
if (inicio.paciente.corDoCartao.equals("Verde")) {
novoPaciente.proximo = inicio;
inicio = novoPaciente;
while (auxiliar.proximo != null) {
auxiliar = auxiliar.proximo;
} novoPaciente = inicio;
}
// Já existe (pelo menos) um Amarelo na Fila, devo procurar o último Amarelo
else {
// Se tem um amarelo, então "inicio = amarelo // auxiliar = inicio"
// Logo devemos procurar o último amarelo
while(auxiliar.proximo != null && auxiliar.proximo.paciente.corDoCartao.equals("Amarelo")){
auxiliar = auxiliar.proximo;
}
novoPaciente.proximo = auxiliar.proximo;
auxiliar.proximo = novoPaciente;
}
}
}
public No retirarPaciente () {
No aux = inicio;
if (listaVazia()) {
System.out.println("Fila vazia!");
} else {
inicio = inicio.proximo;
}
return aux;
}
//---------------------------------------------------------------------------------------------------//
public void imprimirDados() {
if (!listaVazia()) {
No auxiliar = inicio;
while (auxiliar != null) {
System.out.print(auxiliar.paciente);
auxiliar = auxiliar.proximo;
System.out.println(" ");
}
} else {
System.out.println("Fila Vazia");
}
}
}