O estacionamento X contém uma única alameda que guarda até cinco carros. Existe apenas uma entrada/saída no
estacionamento, em uma extremidade da alameda. Se chegar um cliente para retirar um carro que não seja o mais próximo da
saída, todos os carros bloqueando seu caminho sairão do estacionamento, o carro do cliente será manobrado para fora do
estacionamento, e os outros carros voltarão ao estacionamento. Escreva um programa que processe um grupo de linhas de
entrada. Cada linha de entrada contém um ?E?, de entrada, ou um ?S?, de saída, e o número da placa do carro. Presume-se que
os carros cheguem na ordem especificada pela entrada. O programa deve imprimir uma mensagem sempre que um carro
chegar ou sair. Quando um carro chegar, a mensagem deve especificar se existe ou não vaga para o carro no estacionamento.
Se não houver vaga, o carro partirá sem entrar no estacionamento. Quando um carro sair do estacionamento, a mensagem
deverá incluir o número de vezes em que o carro foi manobrado para fora do estacionamento para permitir que outros carros
saíssem.
class no_pilha {
no_pilha proximo;
String placa;
int saiu;
}
class pilha {
private no_pilha topoE;
private no_pilha topoS;
private int cont;
J_Leitura in = new J_Leitura();
public void push(){
no_pilha temp = new no_pilha();
if(temp != null){
if (cont<5){
System.out.print("\nHá vaga ");
System.out.print("\nDigite a placa do carro que entrou: ");
temp.placa = in.Ler();
temp.proximo = topoE;
topoE = temp;
cont++;
}
else{
System.out.println("Não há vaga");
in.Pause(2);
return;
}
}
}
public void pop(){
String placa;
in.Limpa_tela();
no_pilha temp;
topoS = null;
temp = topoE;
topoS = temp;
int op;
System.out.println ("Qual a placa do carro que deve ser retirado?" );
placa = in.Ler();
while (temp!=null){
topoS.saiu = temp.saiu;
topoS.saiu++;
if (temp.placa.equals(placa)){
System.out.println ("Saiu carro de placa: "+temp.placa+" manobrado "+topoS.saiu+" vezes");
topoE= topoE.proximo;
in.Pause(2);
return;
}
topoS.placa = temp.placa;
topoS.proximo = topoS;
temp = temp.proximo;
topoE = topoE.proximo;
temp.placa = topoS.placa;
temp.proximo = topoE;
topoE = temp;
temp.saiu = topoS.saiu;
System.out.println ("Entrou carro de placa: "+topoS.placa);
topoS = topoS.proximo;
}
in.Pause(2);
}
}
class exercicio5pilhasencadeadas {
public static void main(String args[]){
pilha aPilha = new pilha();
int op;
do{
op=menu();
switch(op){
case 1: aPilha.push(); break;
case 2: aPilha.pop();
}
}while(op!=3);
}
public static int menu(){
int op;
J_Leitura in = new J_Leitura();
do{
in.Limpa_tela();
System.out.println(“1 - Entrada de carro”);
System.out.println(“2 - Saída de carro”);
System.out.println(“3 - Sair\n”);
System.out.print("Opcao: ");
op = in.Ler_int();
}while (op<1 || op>3);
return (op);
}
}
estou com problemas no Pop, preciso da implementação para rodar!
se alguém puder me ajudar
Muito obrigado!