Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package teste2;
- import java.util.Scanner;
- public class ordenada {
- private static class No { // classe do No
- public int num;
- public No prox;
- }
- @SuppressWarnings({ "unused", "resource" })
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner entrada = new Scanner(System.in);
- No inicio = null;
- No fim = null;
- No aux;
- No anterior;
- int op, num;
- do {
- System.out.println("1 - inserir ");
- System.out.println("2 - remover");
- System.out.println("3 - exibir");
- System.out.println("4 - sair do menu");
- System.out.println("Digite sua op: "); // menu para opcoes
- op = entrada.nextInt();
- if (op == 1) {
- System.out.println("inserir: ");
- No novo = new No(); // cria um novo No
- novo.num = entrada.nextInt();
- if (inicio == null) { // se a lista estiver vazia
- inicio = novo; // o novo No torna-se o inicio e fim da lista
- fim = novo;
- novo.prox = null; // aponta para null pois ele eh o ultimo
- } else { // qnd a lista nao esta mais vazia
- anterior = null; // 2 variaveis auxiliares para achar a
- // posiscao certa na lista
- aux = inicio;
- while (aux != null && novo.num > aux.num) { // enquanto a
- // lista n acaba
- // e equanto o
- // novo.num n
- // for maior que
- // os numeros da
- // lista
- anterior = aux; // continua marcando uma posicao
- // anterior
- aux = aux.prox; // avança na lista
- }
- if (anterior == null) { // qnd o novo.num eh o menor de
- // todos da lista, entao vai par ao
- // inicio
- novo.prox = inicio;
- inicio = novo;
- } else if (aux == null) { // qnd o novo.num eh o maior de
- // todos
- fim.prox = novo;
- fim = novo;
- fim.prox = null;
- } else { // o novo num vai ser inserido no meio de dois
- // numeros da lista
- anterior.prox = novo;
- novo.prox = aux;
- }
- }
- }
- if (op == 2) {
- System.out.println("exibir lista");
- if (inicio == null) {
- System.out.println("a lista ta vazia");
- } else {
- aux = inicio;
- while (aux != null) {
- System.out.println(" " + aux.num);
- aux = aux.prox;
- }
- }
- }
- if (op == 3) {
- System.out.println("remover: ");
- num = entrada.nextInt();
- anterior = null;
- aux = inicio;
- while (aux != null) {
- if (aux.num == num) { // o no foi encontrado e sera removido
- if (aux == inicio) { // O no a ser removido eh o 1
- inicio = aux.prox; // o inicio torna-se o prox no da lista
- aux = inicio; // o aux torna-se o prox no
- } else if (aux == fim) { // o no a ser removido eh o ultimo
- anterior.prox = null; // o ultimo no torna-se null
- fim = anterior; // o fim torna-se o penultimo numero
- aux = null; // o aux torna-se null
- } else { // o numero a ser removido esta entre dois numeros
- anterior.prox = aux.prox; // faz o anterior do no a ser excluido apontar para o proximo
- aux = aux.prox; //o aux torna-se o no apos o numero que foi excluido para continuar o laço
- }
- } else{
- anterior = aux; // mantem a informação do anterior
- aux = aux.prox; // avança na lista
- }
- }
- }
- } while (op != 4);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement