fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class No<T> {
  8.  
  9. T elemento;
  10. No<T> proximo;
  11. No<T> anterior;
  12.  
  13. public No(T elemento, No<T> anterior, No<T> proximo) {
  14. this.elemento = elemento;
  15. this.proximo = proximo;
  16. this.anterior = anterior;
  17. }
  18.  
  19. public No(T elemento) {
  20. this.elemento = elemento;
  21. proximo = null;
  22. anterior = null;
  23. }
  24.  
  25. @Override
  26. public String toString() {
  27. return elemento.toString();
  28. }
  29. }
  30.  
  31. class Lista<T> {
  32.  
  33. private No<T> primeiro;
  34. private int tamanho;
  35.  
  36. public void adicionar(T item){
  37. No<T> novo = new No<T>(item);
  38.  
  39. if (primeiro == null){
  40. primeiro = novo;
  41. return;
  42. }
  43.  
  44. No<T> curr = primeiro;
  45.  
  46. while (curr.proximo != null){
  47. curr = curr.proximo;
  48. }
  49.  
  50. curr.proximo = novo;
  51. novo.anterior = curr;
  52. }
  53.  
  54. public boolean remover(T item) {
  55. if (primeiro == null) return false;
  56.  
  57. if (primeiro.elemento.equals(item)) {
  58. primeiro = primeiro.proximo;
  59. if (primeiro != null){
  60. primeiro.anterior = null;
  61. }
  62. return true;
  63. }
  64.  
  65. No<T> n = primeiro;
  66. while (n != null && !n.elemento.equals(item)){
  67. n = n.proximo;
  68. }
  69.  
  70. if (n == null) return false;
  71.  
  72. n.anterior.proximo = n.proximo;
  73. if (n.proximo != null){
  74. n.proximo.anterior = n.anterior;
  75. }
  76.  
  77. tamanho--;
  78. return true;
  79.  
  80. }
  81.  
  82. public void mostrar(){
  83. No<T> curr = primeiro;
  84.  
  85. while (curr != null){
  86. System.out.print(curr.toString() + " -> ");
  87. curr = curr.proximo;
  88. }
  89.  
  90. System.out.println("NULL");
  91. }
  92. }
  93.  
  94. /* Name of the class has to be "Main" only if the class is public. */
  95. class Ideone
  96. {
  97. public static void main (String[] args) throws java.lang.Exception
  98. {
  99. Lista<Integer> lista = new Lista<>();
  100.  
  101. lista.adicionar(5);
  102. lista.adicionar(15);
  103. lista.adicionar(2);
  104. lista.adicionar(9);
  105.  
  106. lista.mostrar();
  107.  
  108. lista.adicionar(23);
  109. lista.adicionar(4);
  110. lista.adicionar(18);
  111.  
  112. lista.mostrar();
  113.  
  114. lista.remover(15);
  115.  
  116. System.out.println("Depois de remover o 15");
  117. lista.mostrar();
  118. lista.remover(18);
  119. System.out.println("Depois de remover o 18");
  120. lista.mostrar();
  121. lista.remover(5);
  122. System.out.println("Depois de remover o 5");
  123. lista.mostrar();
  124. lista.remover(2);
  125. lista.remover(9);
  126. lista.remover(23);
  127. lista.remover(4);
  128. System.out.println("Depois de remover todos");
  129. lista.mostrar();
  130. }
  131. }
Success #stdin #stdout 0.05s 27724KB
stdin
Standard input is empty
stdout
5 -> 15 -> 2 -> 9 -> NULL
5 -> 15 -> 2 -> 9 -> 23 -> 4 -> 18 -> NULL
Depois de remover o 15
5 -> 2 -> 9 -> 23 -> 4 -> 18 -> NULL
Depois de remover o 18
5 -> 2 -> 9 -> 23 -> 4 -> NULL
Depois de remover o 5
2 -> 9 -> 23 -> 4 -> NULL
Depois de remover todos
NULL