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. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. ListaDinamica<String> lista = new ListaDinamica<>();
  13. String s1 = "TESTE1";
  14. String s2 = "TESTE2";
  15. lista.add(s1);
  16. lista.add(s2);
  17. lista.remove(1);
  18. lista.add(s2);
  19. for(int i=0;i<lista.size();i++){
  20. System.out.println(lista.get(i));
  21. }
  22. }
  23. }
  24.  
  25. class ListaDinamica<T> {
  26. private class Celula<E>{
  27. E item;
  28. Celula<E> prox;
  29. }
  30.  
  31. private Celula<T> primeiro;
  32. private Celula<T> ultimo;
  33. private int tamanho;
  34.  
  35. public ListaDinamica(){
  36. this.primeiro = new Celula<>();
  37. this.ultimo = this.primeiro;
  38. this.tamanho = 0;
  39. }
  40.  
  41. public ListaDinamica(ListaDinamica<T> objetos){
  42. this();
  43. for(int i=0;i<objetos.size();i++){
  44. this.add(objetos.get(i));
  45. }
  46. }
  47.  
  48. public ListaDinamica(List<T> objetos){
  49. this();
  50. for(int i=0;i<objetos.size();i++){
  51. this.add(objetos.get(i));
  52. }
  53. }
  54.  
  55. public boolean isEmpty(){
  56. return size()==0;
  57. }
  58.  
  59. public void add(T objeto){
  60. if(isEmpty()){
  61. Celula<T> aux = new Celula<>();
  62. aux.item = objeto;
  63. this.primeiro.prox = aux;
  64. this.ultimo = aux;
  65. this.tamanho++;
  66. }
  67. else{
  68. this.ultimo.prox = new Celula<>();
  69. this.ultimo = this.ultimo.prox;
  70. this.ultimo.item = objeto;
  71. this.ultimo.prox = null;
  72. this.tamanho++;
  73. }
  74. }
  75.  
  76. public void remove(int i){
  77. if(isEmpty())return;
  78. if(i==0){
  79. this.primeiro.prox = this.primeiro.prox.prox;
  80. this.tamanho--;
  81. this.ultimo = this.primeiro;
  82. }
  83. else{
  84. Celula<T> aux = this.primeiro.prox;
  85. for(int j=0;j<i;j++){
  86. if(j==i-1){
  87. aux.prox = aux.prox.prox;
  88. if ( i == this.tamanho - 1 )
  89. this.ultimo = aux;
  90. this.tamanho--;
  91. }
  92. else{
  93. aux = aux.prox;
  94. }
  95. }
  96. }
  97. }
  98.  
  99. public T get(int i){
  100. if(isEmpty()) {
  101. System.out.println("LISTA VAZIA");
  102. return null;
  103. }
  104. if(i>=size()){
  105. System.out.println("INDEX INVALIDO");
  106. return null;
  107. }
  108. Celula<T> aux = this.primeiro.prox;
  109. for(int j=0;j<i;j++){
  110. aux = aux.prox;
  111. }
  112. return aux.item;
  113. }
  114.  
  115. public int size(){
  116. return this.tamanho;
  117. }
  118. }
Success #stdin #stdout 0.1s 320512KB
stdin
Standard input is empty
stdout
TESTE1
TESTE2