Advertisement
Jameloncio

ListaCircular - Construção

May 19th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.64 KB | None | 0 0
  1. ______________________________________________________________________________________________________________________________________
  2. Classe Nó:
  3. package listacircular;
  4. public class No<T extends Comparable<T>> {
  5.  
  6. private T valor;
  7. private No proximo;
  8. private No anterior;
  9.  
  10. public No(T valor) {
  11. this.valor = valor;
  12. proximo = null;
  13.  
  14. }
  15.  
  16. /**obtém o próximo nó */
  17. public No<T> obterProximo() {
  18. return this.proximo;
  19. }
  20.  
  21. public No<T> obterAnterior() {
  22. return this.anterior;
  23. }
  24. /**inserir o próximo nó */
  25. public void inserirProximo(No proximo) {
  26. this.proximo = proximo;
  27. }
  28.  
  29. public void inserirAnterior(No anterior) {
  30. this.anterior = anterior;
  31. }
  32. /**inserir o valor no nó */
  33. public void inserirValor(T valor) {
  34. this.valor= valor;
  35. }
  36. /**obter o valor do nó */
  37. public T obterValor() {
  38. return this.valor;
  39. }
  40.  
  41. //métod toString para exibir o nó
  42. public String toString() {
  43. return this.valor.toString();
  44. }
  45.  
  46. }
  47. __________________________________________________________________________________________________________________
  48. Classe ListaCircular:
  49. package listacircular;
  50. public class ListaCircular< T extends Comparable<T>> {
  51. No<T> primeiro;
  52. No<T> ultimo;
  53. No<T> no_atual = primeiro;
  54.  
  55.  
  56. public void inserir(T valor) {
  57. No<T> novo_no = new No<T>(valor);
  58. No<T> auxiliar = primeiro;
  59. No<T> auxiliar2;
  60.  
  61. if(this.primeiro == null) {
  62. this.primeiro = novo_no;
  63. this.ultimo = novo_no;
  64. primeiro.inserirAnterior(ultimo);
  65. primeiro.inserirProximo(ultimo);
  66. ultimo.inserirAnterior(primeiro);
  67. ultimo.inserirProximo(primeiro);
  68. /*System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
  69. "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
  70. System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
  71. "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");*/
  72.  
  73. }else {
  74. System.out.println("-----------------------------------------");
  75. while((auxiliar != this.ultimo) &&
  76. ( auxiliar.obterValor().compareTo( novo_no.obterValor() ) == -1 ) )
  77. {
  78. System.out.println("Auxiliar atual: -"+auxiliar);
  79. auxiliar = auxiliar.obterProximo();
  80. System.out.println("Mudou para: -"+auxiliar);
  81. }
  82.  
  83. if(auxiliar == this.primeiro) {
  84. if(this.primeiro == this.ultimo){
  85. if(this.primeiro.obterValor().compareTo(novo_no.obterValor()) == -1 ) {
  86. this.ultimo=novo_no;
  87. this.primeiro.inserirProximo(this.ultimo);
  88. this.primeiro.inserirAnterior(this.ultimo);
  89. this.ultimo.inserirAnterior(this.primeiro);
  90. this.ultimo.inserirProximo(this.primeiro);
  91. System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
  92. "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
  93. System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
  94. "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");
  95.  
  96. }else {
  97. this.ultimo=this.primeiro;
  98. this.primeiro=novo_no;
  99. this.primeiro.inserirProximo(this.ultimo);
  100. this.primeiro.inserirAnterior(this.ultimo);
  101. this.ultimo.inserirAnterior(this.primeiro);
  102. this.ultimo.inserirProximo(this.primeiro);
  103. System.out.println("Primeiro: "+this.primeiro.obterValor()+"\nUltimo: "+this.ultimo.obterValor()+
  104. "\nProximo do primeiro: "+this.primeiro.obterProximo()+"\nAnterior do primeiro:"+this.primeiro.obterAnterior());
  105. System.out.println("\nProximo do ultimo: "+this.ultimo.obterProximo()+
  106. "\nAnterior do ultimo :"+this.ultimo.obterAnterior()+"\n_____________________");
  107. }
  108. } else {
  109. System.out.println("entra nesse if (menor de todos)");
  110. this.primeiro=novo_no;
  111. auxiliar.inserirAnterior(this.primeiro);
  112. this.primeiro.inserirProximo(auxiliar);
  113. this.primeiro.inserirAnterior(this.ultimo);
  114. this.ultimo.inserirProximo(this.primeiro);
  115. }
  116. } else if(auxiliar.obterValor()==this.ultimo.obterValor()){
  117. System.out.println("entra nesse if (ultimo)");
  118. this.ultimo=novo_no;
  119. auxiliar.inserirProximo(this.ultimo);
  120. this.ultimo.inserirAnterior(auxiliar);
  121. this.ultimo.inserirProximo(primeiro);
  122. this.primeiro.inserirAnterior(this.ultimo);
  123. }
  124. else if(auxiliar.obterAnterior()==this.primeiro && auxiliar.obterValor().compareTo( novo_no.obterValor() ) == +1){
  125. System.out.println("entra if primeiro");
  126. auxiliar.inserirAnterior(novo_no);
  127. novo_no.inserirProximo(auxiliar);
  128. novo_no.inserirAnterior(this.primeiro);
  129. this.primeiro.inserirProximo(novo_no);
  130. } else {
  131. System.out.println("desce pro if meio");
  132. auxiliar2 = auxiliar.obterAnterior();
  133. novo_no.inserirProximo(auxiliar);
  134. auxiliar2.inserirProximo(primeiro);
  135. }
  136.  
  137. }
  138.  
  139. }
  140.  
  141. public No<T> remover(T valor) {//arrumada
  142.  
  143. No<T> auxiliar = primeiro;
  144.  
  145. No<T> retorno =null;
  146.  
  147. while((auxiliar != null) && (auxiliar.obterValor().compareTo( valor ) != 0) )
  148. {
  149. auxiliar = auxiliar.obterProximo();
  150. }
  151.  
  152.  
  153. if(auxiliar == this.primeiro) {
  154.  
  155. retorno = this.primeiro;
  156. retorno.inserirProximo(null);
  157. this.primeiro = this.primeiro.obterProximo();
  158. this.primeiro.inserirAnterior(null);
  159.  
  160.  
  161. }else if(auxiliar != null)
  162. auxiliar.obterAnterior().inserirProximo(auxiliar.obterProximo());
  163. auxiliar.obterProximo().inserirAnterior(auxiliar.obterAnterior());
  164. auxiliar.inserirProximo(null);
  165. auxiliar.inserirAnterior(null);
  166.  
  167.  
  168. return retorno;
  169.  
  170. }
  171.  
  172.  
  173. public No<T> buscar(T valor) {
  174.  
  175.  
  176. if(no_atual== null)
  177. no_atual = primeiro;
  178.  
  179. while((no_atual != null) && (no_atual.obterValor().compareTo( valor )) != 0 )
  180. {
  181. if (no_atual.obterValor().compareTo(valor)==-1){
  182. no_atual = no_atual.obterProximo();
  183. }
  184. else
  185. no_atual=no_atual.obterAnterior();
  186.  
  187.  
  188. }
  189.  
  190.  
  191.  
  192. return no_atual;
  193. }
  194.  
  195.  
  196. public String buscarCount(T valor) {
  197.  
  198. int count = 0;
  199.  
  200. if(no_atual== null)
  201. no_atual = primeiro;
  202.  
  203. while((no_atual != null) && (no_atual.obterValor().compareTo( valor )) != 0 )
  204. {
  205. count++;
  206. if (no_atual.obterValor().compareTo(valor)==-1){
  207. no_atual = no_atual.obterProximo();
  208. }
  209. else
  210. no_atual=no_atual.obterAnterior();
  211. }
  212.  
  213.  
  214. return "Achou "+no_atual.obterValor()+" com "+count + " passos";
  215. }
  216.  
  217.  
  218. public String toString() {
  219. String s = "";
  220. No<T> auxiliar = primeiro;
  221.  
  222. do{
  223. s+=auxiliar.obterValor().toString();
  224. auxiliar=auxiliar.obterProximo();
  225. if(auxiliar!=this.primeiro){
  226. s+=" - ";
  227. }
  228. } while(auxiliar != this.primeiro);
  229. s+=".";
  230. return s;
  231. }
  232. }
  233. ______________________________________________________________________________________________________________________________________
  234. Classe Main:
  235. package listacircular;
  236. public class Main {
  237. public static void main(String[] args) {
  238. ListaCircular lista = new ListaCircular<String>();
  239.  
  240. lista.inserir(15);
  241. //System.out.println(lista.toString());
  242. lista.inserir(30);
  243. lista.inserir(2);
  244. lista.inserir(13);
  245. System.out.println(lista.toString());
  246. lista.inserir(10);
  247. lista.inserir(14);
  248. System.out.println(lista.toString());
  249. }
  250.  
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement