Advertisement
dfilipeloja

Lista

Jan 18th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.75 KB | None | 0 0
  1. public class ListaLigada {
  2.  
  3.     private class Node {
  4.  
  5.         public int element;
  6.         public Node next, previous;
  7.  
  8.         public Node(int nValue) {
  9.             element = nValue;
  10.             next = null;
  11.             previous = null;
  12.         }
  13.     }
  14.  
  15.     private Node head;
  16.     private int tamanho;
  17.  
  18.     public ListaLigada() {
  19.         head = null;
  20.         tamanho = 0;
  21.     }
  22.  
  23.     public boolean isEmpty() {
  24.         return head == null;
  25.     }
  26.  
  27.     public boolean remove(int i) {
  28.         if (isEmpty()) {
  29.             return false;
  30.         }
  31.  
  32.         Node delete = head, previous = null;
  33.         while (delete != null && delete.element != i) {
  34.             previous = delete;
  35.             delete = delete.next;
  36.         }
  37.  
  38.         if (delete == head) {
  39.             head = head.next;
  40.             head.previous = null;
  41.         } else if (delete != null) {
  42.             previous.next = delete.next;
  43.             delete.next.previous = previous;
  44.         } else if (delete == null) {
  45.             return false;
  46.         }
  47.  
  48.         tamanho--;
  49.         return true;
  50.     }
  51.  
  52.     public boolean add(int i) {
  53.         Node newNode = new Node(i);
  54.         Node actual = head, previous = null;
  55.  
  56.         while (actual != null && i > actual.element) {
  57.             previous = actual;
  58.             actual = actual.next;
  59.         }
  60.  
  61.         if (previous == null) {
  62.             newNode.next = head;
  63.             head = newNode;
  64.         } else {
  65.             if (actual == null) {
  66.                 newNode.previous = previous;
  67.                 previous.next = newNode;
  68.             } else {
  69.                 newNode.next = actual;
  70.                 actual.previous = newNode;
  71.                 previous.next = newNode;
  72.                 newNode.previous = previous;
  73.             }
  74.         }
  75.         tamanho++;
  76.         return true;
  77.     }
  78.  
  79.     @Override
  80.     public String toString() {
  81.         StringBuilder sb = new StringBuilder();
  82.         Node actual = head;
  83.         if (head == null) {
  84.             return "Lista vazia!";
  85.         }
  86.  
  87.         sb.append("Lista:\n");
  88.  
  89.         while (actual.next != null) {
  90.             sb.append("" + actual.element + " -> ");
  91.             actual = actual.next;
  92.         }
  93.         sb.append("" + actual.element + "\n");
  94.  
  95.         sb.append("\nLista reversa:\n");
  96.  
  97.         while (actual.previous != null) {
  98.             sb.append("" + actual.element + " <- ");
  99.             actual = actual.previous;
  100.         }
  101.         sb.append("" + actual.element + "\n");
  102.  
  103.         return sb.toString();
  104.     }
  105.  
  106.     public static void main(String[] args) {
  107.         ListaLigada ll = new ListaLigada();
  108.         ll.add(5);
  109.         ll.add(7);
  110.         ll.add(3);
  111.         ll.add(4);
  112.         ll.remove(5);
  113.         System.out.println(ll);
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement