Advertisement
FacuValverdi

edt04-ej4

Nov 9th, 2019
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.84 KB | None | 0 0
  1.  private class Node {
  2.             public E item;
  3.             public Node next;
  4.  
  5.             public Node() {
  6.                 this(null, null);
  7.             }
  8.             public Node(E item) {
  9.                 this(item, null);
  10.             }
  11.             public Node(E item, Node next) {
  12.                 this.item = item;
  13.                 this.next = next;
  14.             }
  15.             public String toString() {
  16.                 return this.item.toString();
  17.             }
  18.         }
  19.         @Override
  20.         public Iterator<E> iterator() {
  21.             return new MyIterator(this.head);
  22.         }
  23.         private class MyIterator implements Iterator<E> {
  24.             private Node actual;
  25.            
  26.             public MyIterator(Node inicio) {
  27.                 this.actual = inicio;
  28.             }
  29.            
  30.             @Override
  31.             public boolean hasNext() {
  32.                 return this.actual != null;
  33.             }
  34.      
  35.             @Override
  36.             public E next() {
  37.                 if (!this.hasNext()) {
  38.                     throw new RuntimeException("La lista está vacía...");
  39.                 }
  40.                 E item = this.actual.item;
  41.                 this.actual = this.actual.next;
  42.                 return item;
  43.             }  
  44.         }
  45. }
  46. }
  47. public class List<E> {
  48. private Node<E> head;
  49. private Node<E> tail;
  50. int count;
  51. public Node<E> getHead(){
  52. return this.head;
  53. }
  54. public Node<E> getTail(){
  55. return this.tail;
  56. }
  57. public boolean isEmpty() {
  58. if (this.count == 0) {
  59. return true;
  60. }
  61. return false;
  62. }
  63.  
  64. public int size() {
  65. return this.count;
  66. }
  67.  
  68. public void AddToHead(E item) {
  69. if(this.count==0) {
  70. this.head=this.tail=new Node<E>(item,null);
  71. ++this.count;
  72. }else {
  73. Node<E> temp = new Node<E>(item,null);
  74. temp.next=this.head;
  75. this.head=temp;
  76. ++this.count;
  77. }
  78. }
  79.  
  80. public void AddToTail(E item) {
  81. if (this.count==0) {
  82. this.head=this.tail=new Node<E>(item,null);
  83. ++this.count;
  84. }else {
  85. Node<E> temp = new Node<E>(item, null);
  86. this.tail.next=temp;
  87. this.tail=temp;
  88. ++this.count;
  89. }
  90. }
  91.  
  92. public boolean Contains(E item) {
  93. if (this.count==0) {
  94. return false;
  95. }
  96. Node<E> nodo;
  97. for (nodo = this.head; nodo.getNext() != null; nodo = nodo.getNext()) {
  98. if (nodo.getItem().equals(item)) {
  99. return true;
  100. }
  101. }
  102. if (nodo.getItem().equals(item)) {
  103. return true;
  104. }
  105. return false;
  106. }
  107.  
  108. public List() {
  109. this.head = null;
  110. this.tail = null;
  111. this.count = 0;
  112. }
  113.  
  114. public E RemoveFromHead() {
  115. if (this.count==0) {
  116. throw new RuntimeException("Está vacío");
  117. }else {
  118. E aux = this.head.getItem();
  119. this.head = this.head.getNext();
  120. if(this.head==null) {
  121. this.tail=null;
  122. }
  123. --this.count;
  124. return aux;
  125. }
  126. }
  127.  
  128. public E RemoveFromTail() {
  129.  
  130. if (this.count==0) {
  131. throw new RuntimeException("Está vacío");
  132. }
  133. E aux = this.tail.getItem();
  134. if(this.head.next==null) {
  135. this.head=this.tail=null;
  136. }else {
  137. Node<E> nodo = this.head;
  138. for (; nodo.getNext() != null; nodo = nodo.getNext()) {}
  139. this.tail=nodo;
  140. this.tail.next=null;
  141. }
  142. --this.count;
  143. return aux;
  144. }
  145.  
  146. public String toString() {
  147. if (this.count==0) {
  148. throw new RuntimeException("Está vacío");
  149. }else {
  150. Node<E> nodo = this.head;
  151. String str = "";
  152. for (nodo=this.head; nodo.getNext() != null; nodo = nodo.getNext()) {
  153. str += nodo.getItem().toString();
  154. }
  155. str += nodo.getItem().toString();
  156. return str;
  157. }
  158. }
  159. }
  160.  
  161. // Clase generica Cola con una Lista
  162. public class Queue<E> {
  163. List<E> lista;
  164.  
  165. public boolean isEmpty() {
  166. return lista.isEmpty();
  167. }
  168.  
  169. public E DeQueue() {
  170. if(lista.isEmpty()) {
  171. return null;
  172. }else {
  173. E obj = lista.RemoveFromHead();
  174. return obj;
  175. }
  176. }
  177.  
  178. public void EnQueue(E elem) {
  179. if(lista.isEmpty()) {
  180. lista.AddToHead(elem);
  181. }else {
  182. lista.AddToTail(elem);
  183. }
  184. }
  185.  
  186. public E Peek() {
  187. if(lista.isEmpty()) {
  188. System.out.println("Esta vacia");
  189. return null;
  190. }else {
  191. return lista.getHead().getItem();
  192. }
  193. }
  194.  
  195. public Queue() {
  196. this.lista= new List<E>();
  197. }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement