Advertisement
Filip_Markoski

2.Lab2.1 DLL Divide by parity (Solved)

Oct 23rd, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. class DLLNode<E extends Number> {
  6.     protected E element;
  7.     protected DLLNode<E> pred, succ;
  8.  
  9.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  10.         this.element = elem;
  11.         this.pred = pred;
  12.         this.succ = succ;
  13.     }
  14.  
  15.     @Override
  16.     public String toString() {
  17.         return element.toString();
  18.     }
  19. }
  20.  
  21. class DLL<E extends Number> {
  22.     private DLLNode<E> first, last;
  23.  
  24.     public DLL() {
  25.         this.first = null;
  26.         this.last = null;
  27.     }
  28.  
  29.     @Override
  30.     public String toString() {
  31.         if (first != null) {
  32.             DLLNode<E> temp = first;
  33.             StringBuffer sb = new StringBuffer();
  34.             sb.append(temp.toString() + " ");
  35.             while (temp.succ != null) {
  36.                 temp = temp.succ;
  37.                 sb.append(temp + " ");
  38.             }
  39.             sb.setLength(sb.length() - 1);
  40.             return sb.toString();
  41.         } else {
  42.             return "";
  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 E deleteFirst() {
  66.         if (first != null) {
  67.             DLLNode<E> tmp = first;
  68.             first = first.succ;
  69.             first.pred = null;
  70.             if (first == null)
  71.                 last = null;
  72.             return tmp.element;
  73.         }
  74.         return null;
  75.     }
  76.  
  77.     public E deleteLast() {
  78.         if (first != null) {
  79.             if (first.succ == null) {
  80.                 return deleteFirst();
  81.             } else {
  82.                 DLLNode<E> tmp = last;
  83.                 last = last.pred;
  84.                 last.succ = null;
  85.                 return tmp.element;
  86.             }
  87.         }
  88.         return null;
  89.     }
  90.  
  91.     public void insertAfter(E o, DLLNode<E> after) {
  92.         if (after == last) {
  93.             insertLast(o);
  94.             return;
  95.         }
  96.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  97.         after.succ.pred = ins;
  98.         after.succ = ins;
  99.     }
  100.  
  101.     public void insertBefore(E o, DLLNode<E> before) {
  102.         if (before == first) {
  103.             insertFirst(o);
  104.             return;
  105.         }
  106.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  107.         before.pred.succ = ins;
  108.         before.pred = ins;
  109.     }
  110.  
  111.     public E delete(DLLNode<E> node) {
  112.         if (node == first) {
  113.             deleteFirst();
  114.             return node.element;
  115.         }
  116.         if (node == last) {
  117.             deleteLast();
  118.             return node.element;
  119.         }
  120.         node.pred.succ = node.succ;
  121.         node.succ.pred = node.pred;
  122.         return node.element;
  123.     }
  124.  
  125.     public void split(DLL<Integer> original, DLL<Integer> odds, DLL<Integer> evens) {
  126.         while (original.first != null) {
  127.             if (original.first.element % 2 == 0) {
  128.                 evens.insertLast(original.first.element);
  129.             } else {
  130.                 odds.insertLast(original.first.element);
  131.             }
  132.             first = first.succ;
  133.         }
  134.     }
  135. }
  136.  
  137. class DivideOddEven {
  138.  
  139.     public static void main(String[] args) throws IOException {
  140.         BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  141.         String s = stdin.readLine();
  142.         int N = Integer.parseInt(s);
  143.         s = stdin.readLine();
  144.         String[] pomniza = s.split(" ");
  145.  
  146.         DLL<Integer> list = new DLL<Integer>();
  147.         for (int i = 0; i < N; i++) {
  148.             list.insertLast(Integer.parseInt(pomniza[i]));
  149.         }
  150.  
  151.         // System.out.println(list.toString());
  152.  
  153.         DLL<Integer> odds = new DLL<Integer>();
  154.         DLL<Integer> evens = new DLL<Integer>();
  155.         list.split(list, odds, evens);
  156.  
  157.         System.out.println(odds.toString());
  158.         System.out.println(evens.toString());
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement