package LSE;

import java.util.Scanner;
class Elemento{
    String nome,fornercedor;
    int quantidadeAtual;
    float valorAtual;
    Elemento proximo;
}
public class listaEncadeada {
    static Scanner ler = new Scanner(System.in);
    public static void main(String[] args) {
        int op;
        
        do{
            System.out.println("=========== MENU ===========");
            System.out.println("| 1- Novo Elemento          |");
            System.out.println("| 2- Exibir Elementos       |");
            System.out.println("| 3- Pesquisar              |");
            System.out.println("| 4- Excluir Elemento       |");
            System.out.println("| 5- Editar Elemento        |");
            System.out.println("| 0- Sair                   |");
            System.out.println("|===========================|");
            System.out.print("> ");
            op = ler.nextInt();
                    
            switch(op){
                case 1:
                    insereElemento();
                    break;
                case 2:
                    exibeLista();
                    break;
                case 3:
                    exibeLista();
                    break;
                case 4:
                    excluirElemento();
                    break;
                case 5:
                    break;
                case 0:
                    System.out.println("Fim do programa");
                    break;
                default:
                    System.out.println("Opção inválida");
            }
        }while(op != 0);
    }
    static Elemento primeiro,ultimo,novo,aux;
    public static void insereElemento() {
        if(primeiro == null){
            novo = new Elemento();
            System.out.print("Nome: ");
            novo.nome = ler.next();
            System.out.print("Fornecedor: ");
            novo.fornercedor = ler.next();
            System.out.print("Quantidade Atual: ");
            novo.quantidadeAtual = ler.nextInt();
            System.out.print("Valor Atual: ");
            novo.valorAtual = ler.nextFloat();
            novo.proximo = null;
            primeiro = novo;
            ultimo = novo;
        }else{
            novo = new Elemento();
            System.out.print("Nome: ");
            novo.nome = ler.next();
            System.out.print("Fornecedor: ");
            novo.fornercedor = ler.next();
            System.out.print("Quantidade Atual: ");
            novo.quantidadeAtual = ler.nextInt();
            System.out.print("Valor Atual: ");
            novo.valorAtual = ler.nextFloat();
            novo.proximo = null;
            primeiro.proximo = novo;
            ultimo = novo;
        }
    }
    public static void exibeLista(){
        if(primeiro == null){
            System.out.println("Lista vazia!");
        }else{
            aux = primeiro;
            while(aux != null){
                System.out.println("========== LISTA ==========");
                System.out.println("Nome: " + aux.nome);
                System.out.println("Fornecedor: " + aux.fornercedor);
                System.out.println("Quantidade Atual: " + aux.quantidadeAtual);
                System.out.println("Valor Atual: " + aux.valorAtual);
                aux = aux.proximo;
            }
        }
    }
public static void excluirElemento(){
        Elemento temp;
        
        System.out.print("Digite o elemento a excluir: ");
        String valor = ler.next();
        
        if(primeiro.nome.equals(valor)){//Exluir o Primeiro Elemento
            primeiro = primeiro.proximo;
        }else if(ultimo.nome.equals(valor)){//Exluir o Ultimo Elemento
            temp = primeiro.proximo;
            while(temp.proximo != ultimo){
                temp = temp.proximo;
            }
            ultimo = temp;
            ultimo.proximo = null;
            
        }else{
            temp = primeiro;
            while(temp!=ultimo){
                if(temp.proximo.nome.equals(valor)){
                    aux = temp.proximo.proximo;
                    temp.proximo = aux;
                }
                temp = temp.proximo;
            }
        }  
    }
}