Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista de exercícios Jean Carlos Morais Amorim class Lista { private No primeiro, ultimo; private int tamanho; class No { int elemento; No proximo; } Lista() { tamanho = 0; } void insereInicio(int elemento) { No novoNo = new No(); novoNo.elemento = elemento; novoNo.proximo = primeiro; primeiro = novoNo; if(tamanho == 0) { ultimo = novoNo; } tamanho++; } void insereFinal(int elemento) { if(tamanho == 0) { insereInicio(elemento); } else { No novoNo = new No(); novoNo.elemento = elemento; novoNo.proximo = null; ultimo.proximo = novoNo; ultimo = novoNo; tamanho++; } } void insereNaPosicao(int posicao, int elemento) { if (tamanho == 0 || posicao == 0) { insereInicio(elemento); } else if(posicao == tamanho) { insereFinal(elemento); } else { No noAnterior = buscarNoNaPosicao(posicao - 1); No noNaPosicao = buscarNoNaPosicao(posicao); No novoNo = new No(); novoNo.elemento = elemento; novoNo.proximo = noNaPosicao; noAnterior.proximo = novoNo; tamanho++; } } No removeInicio() { if(tamanho == 0) { return null; } No noRemovido = primeiro; primeiro = primeiro.proximo; tamanho--; if(tamanho == 0) { ultimo = null; } return noRemovido; } No removeFinal() { if(tamanho == 0) { return null; } if(tamanho == 1) { return removeInicio(); } No noNaPosicaoAnterior = buscarNoNaPosicao(tamanho - 2); No noRemovido = noNaPosicaoAnterior.proximo; noNaPosicaoAnterior.proximo = null; ultimo = noNaPosicaoAnterior; tamanho--; return noRemovido; } No buscarNoNaPosicao(int posicao) { if(!(posicao >= 0 && posicao < tamanho)) { return null; } No atual = primeiro; for (int i = 0; i < posicao; i++) { atual = atual.proximo; } return atual; } void imprime() { if(tamanho == 0) { System.out.println("[]"); } System.out.print("["); No atual = primeiro; do { System.out.print(atual.elemento); if(atual.proximo != null) { System.out.print(", "); } atual = atual.proximo; }while(atual != null); System.out.println("]"); } } class Main { static Lista lista = new Lista(); public static void main(String[] args) { System.out.println("Insere 10 elementos na lista"); for(int i = 0; i < 10; i++) { lista.insereFinal(i); } lista.imprime(); System.out.println(); System.out.println("Remove os 3 primeiros e adiciona no final"); for(int i = 0; i < 3; i++) { int removido = lista.removeInicio().elemento; lista.insereFinal(removido); } lista.imprime(); System.out.println(); System.out.println("Remove o primeiro e o último"); lista.removeInicio(); lista.removeFinal(); lista.imprime(); System.out.println(); System.out.println("Inserir dois elementos nas posições 4 e 5 da lista"); lista.insereNaPosicao(4, 10); lista.insereNaPosicao(5, 11); lista.imprime(); System.out.println(); } }
Compartilhar