Advertisement
Guest User

DLL

a guest
May 25th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. class DLLNode<E> {
  2.     protected E element;
  3.     protected DLLNode<E> pred, succ;
  4.  
  5.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  6.         this.element = elem;
  7.         this.pred = pred;
  8.         this.succ = succ;
  9.     }
  10.  
  11.     @Override
  12.     public String toString() {
  13.         return "<-" + element.toString() + "->";
  14.     }
  15. }
  16.  
  17. class DLL<E> {
  18.     private DLLNode<E> first, last;
  19.  
  20.     public DLL() {
  21.         // Construct an empty SLL
  22.         this.first = null;
  23.         this.last = null;
  24.     }
  25.  
  26.     public void deleteList() {
  27.         first = null;
  28.         last = null;
  29.     }
  30.  
  31.     public int length() {
  32.         int ret;
  33.         if (first != null) {
  34.             DLLNode<E> tmp = first;
  35.             ret = 1;
  36.             while (tmp.succ != null) {
  37.                 tmp = tmp.succ;
  38.                 ret++;
  39.             }
  40.             return ret;
  41.         } else
  42.             return 0;
  43.  
  44.     }
  45.  
  46.     public void insertFirst(E o) {
  47.         DLLNode<E> ins = new DLLNode<E>(o, null, first);
  48.         if (first == null)
  49.             last = ins;
  50.         else
  51.             first.pred = ins;
  52.         first = ins;
  53.     }
  54.  
  55.     public void insertLast(E o) {
  56.         if (first == null)
  57.             insertFirst(o);
  58.         else {
  59.             DLLNode<E> ins = new DLLNode<E>(o, last, null);
  60.             last.succ = ins;
  61.             last = ins;
  62.         }
  63.     }
  64.  
  65.     public void insertAfter(E o, DLLNode<E> after) {
  66.         if (after == last) {
  67.             insertLast(o);
  68.             return;
  69.         }
  70.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  71.         after.succ.pred = ins;
  72.         after.succ = ins;
  73.     }
  74.  
  75.     public void insertBefore(E o, DLLNode<E> before) {
  76.         if (before == first) {
  77.             insertFirst(o);
  78.             return;
  79.         }
  80.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  81.         before.pred.succ = ins;
  82.         before.pred = ins;
  83.     }
  84.  
  85.     public E deleteFirst() {
  86.         if (first != null) {
  87.             DLLNode<E> tmp = first;
  88.             first = first.succ;
  89.             if (first != null) first.pred = null;
  90.             if (first == null)
  91.                 last = null;
  92.             return tmp.element;
  93.         } else
  94.             return null;
  95.     }
  96.  
  97.     public E deleteLast() {
  98.         if (first != null) {
  99.             if (first.succ == null)
  100.                 return deleteFirst();
  101.             else {
  102.                 DLLNode<E> tmp = last;
  103.                 last = last.pred;
  104.                 last.succ = null;
  105.                 return tmp.element;
  106.             }
  107.         }
  108.         // else throw Exception
  109.         return null;
  110.     }
  111.  
  112.     @Override
  113.     public String toString() {
  114.         String ret = new String();
  115.         if (first != null) {
  116.             DLLNode<E> tmp = first;
  117.             ret += tmp + "<->";
  118.             while (tmp.succ != null) {
  119.                 tmp = tmp.succ;
  120.                 ret += tmp + "<->";
  121.             }
  122.         } else
  123.             ret = "Prazna lista!!!";
  124.         return ret;
  125.     }
  126.  
  127.     public DLLNode<E> getFirst() {
  128.         return first;
  129.     }
  130.  
  131.     public DLLNode<E> getLast() {
  132.  
  133.         return last;
  134.     }
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement