Advertisement
rfop

ListaSimplesOrdenada

Mar 28th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.34 KB | None | 0 0
  1. package teste2;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class ordenada {
  6.     private static class No { // classe do No
  7.         public int num;
  8.         public No prox;
  9.     }
  10.  
  11.     @SuppressWarnings({ "unused", "resource" })
  12.     public static void main(String[] args) {
  13.         // TODO Auto-generated method stub
  14.         Scanner entrada = new Scanner(System.in);
  15.         No inicio = null;
  16.         No fim = null;
  17.         No aux;
  18.         No anterior;
  19.         int op, num;
  20.         do {
  21.             System.out.println("1 - inserir ");
  22.             System.out.println("2 - remover");
  23.             System.out.println("3 - exibir");
  24.             System.out.println("4 - sair do menu");
  25.             System.out.println("Digite sua op: "); // menu para opcoes
  26.             op = entrada.nextInt();
  27.             if (op == 1) {
  28.                 System.out.println("inserir: ");
  29.                 No novo = new No(); // cria um novo No
  30.                 novo.num = entrada.nextInt();
  31.                 if (inicio == null) { // se a lista estiver vazia
  32.                     inicio = novo; // o novo No torna-se o inicio e fim da lista
  33.                     fim = novo;
  34.                     novo.prox = null; // aponta para null pois ele eh o ultimo
  35.                 } else { // qnd a lista nao esta mais vazia
  36.                     anterior = null; // 2 variaveis auxiliares para achar a
  37.                                         // posiscao certa na lista
  38.                     aux = inicio;
  39.                     while (aux != null && novo.num > aux.num) { // enquanto a
  40.                                                                 // lista n acaba
  41.                                                                 // e equanto o
  42.                                                                 // novo.num n
  43.                                                                 // for maior que
  44.                                                                 // os numeros da
  45.                                                                 // lista
  46.                         anterior = aux; // continua marcando uma posicao
  47.                                         // anterior
  48.                         aux = aux.prox; // avança na lista
  49.                     }
  50.                     if (anterior == null) { // qnd o novo.num eh o menor de
  51.                                             // todos da lista, entao vai par ao
  52.                                             // inicio
  53.                         novo.prox = inicio;
  54.                         inicio = novo;
  55.                     } else if (aux == null) { // qnd o novo.num eh o maior de
  56.                                                 // todos
  57.                         fim.prox = novo;
  58.                         fim = novo;
  59.                         fim.prox = null;
  60.                     } else { // o novo num vai ser inserido no meio de dois
  61.                                 // numeros da lista
  62.                         anterior.prox = novo;
  63.                         novo.prox = aux;
  64.                     }
  65.                 }
  66.             }
  67.             if (op == 2) {
  68.                 System.out.println("exibir lista");
  69.                 if (inicio == null) {
  70.                     System.out.println("a lista ta vazia");
  71.                 } else {
  72.                     aux = inicio;
  73.                     while (aux != null) {
  74.                         System.out.println(" " + aux.num);
  75.                         aux = aux.prox;
  76.                     }
  77.                 }
  78.             }
  79.             if (op == 3) {
  80.                 System.out.println("remover: ");
  81.                 num = entrada.nextInt();
  82.                 anterior = null;
  83.                 aux = inicio;
  84.                 while (aux != null) {
  85.                     if (aux.num == num) { // o no foi encontrado e sera removido
  86.                         if (aux == inicio) { // O no a ser removido eh o 1
  87.                             inicio = aux.prox; // o inicio torna-se o prox no da lista
  88.                             aux = inicio; // o aux torna-se o prox no
  89.                         } else if (aux == fim) { // o no a ser removido eh o ultimo
  90.                             anterior.prox = null; // o ultimo no torna-se null
  91.                             fim = anterior; // o fim torna-se o penultimo numero
  92.                             aux = null; // o aux torna-se null
  93.                         } else { // o numero a ser removido esta entre dois numeros
  94.                             anterior.prox = aux.prox; // faz o anterior do no a ser excluido apontar para o proximo
  95.                             aux = aux.prox; //o aux torna-se o no apos o numero que foi excluido para continuar o laço
  96.                         }
  97.                     } else{
  98.                         anterior = aux; // mantem a informação do anterior
  99.                         aux = aux.prox; // avança na lista
  100.                     }
  101.                 }
  102.  
  103.             }
  104.         } while (op != 4);
  105.     }
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement