Mitrezzz

АПС Кол1 Листа ПарНепар 2019/20

Feb 11th, 2020
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.07 KB | None | 0 0
  1. package Kolokvium19ta;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6.  
  7. class DLLNode<E> {
  8.     protected E element;
  9.     protected DLLNode<E> pred, succ;
  10.  
  11.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  12.         this.element = elem;
  13.         this.pred = pred;
  14.         this.succ = succ;
  15.     }
  16.  
  17.     @Override
  18.     public String toString() {
  19.         return element.toString();
  20.     }
  21. }
  22.  
  23. class DLL<E> {
  24.     private DLLNode<E> first, last;
  25.  
  26.     public DLL() {
  27.         // Construct an empty SLL
  28.         this.first = null;
  29.         this.last = null;
  30.     }
  31.  
  32.     public void deleteList() {
  33.         first = null;
  34.         last = null;
  35.     }
  36.  
  37.     public int length() {
  38.         int ret;
  39.         if (first != null) {
  40.             DLLNode<E> tmp = first;
  41.             ret = 1;
  42.             while (tmp.succ != null) {
  43.                 tmp = tmp.succ;
  44.                 ret++;
  45.             }
  46.             return ret;
  47.         } else
  48.             return 0;
  49.  
  50.     }
  51.  
  52.     public DLLNode<E> find(E o) {
  53.         if (first != null) {
  54.             DLLNode<E> tmp = first;
  55.             while (tmp.element != o && tmp.succ != null)
  56.                 tmp = tmp.succ;
  57.             if (tmp.element == o) {
  58.                 return tmp;
  59.             } else {
  60.                 System.out.println("Elementot ne postoi vo listata");
  61.             }
  62.         } else {
  63.             System.out.println("Listata e prazna");
  64.         }
  65.         return first;
  66.     }
  67.  
  68.     public void insertFirst(E o) {
  69.         DLLNode<E> ins = new DLLNode<E>(o, null, first);
  70.         if (first == null)
  71.             last = ins;
  72.         else
  73.             first.pred = ins;
  74.         first = ins;
  75.     }
  76.  
  77.     public void insertLast(E o) {
  78.         if (first == null)
  79.             insertFirst(o);
  80.         else {
  81.             DLLNode<E> ins = new DLLNode<E>(o, last, null);
  82.             last.succ = ins;
  83.             last = ins;
  84.         }
  85.     }
  86.  
  87.     public void insertAfter(E o, DLLNode<E> after) {
  88.         if (after == last) {
  89.             insertLast(o);
  90.             return;
  91.         }
  92.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  93.         after.succ.pred = ins;
  94.         after.succ = ins;
  95.     }
  96.  
  97.     public void insertBefore(E o, DLLNode<E> before) {
  98.         if (before == first) {
  99.             insertFirst(o);
  100.             return;
  101.         }
  102.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  103.         before.pred.succ = ins;
  104.         before.pred = ins;
  105.     }
  106.  
  107.     public E deleteFirst() {
  108.         if (first != null) {
  109.             DLLNode<E> tmp = first;
  110.             first = first.succ;
  111.             if (first != null)
  112.                 first.pred = null;
  113.             if (first == null)
  114.                 last = null;
  115.             return tmp.element;
  116.         } else
  117.             return null;
  118.     }
  119.  
  120.     public E deleteLast() {
  121.         if (first != null) {
  122.             if (first.succ == null)
  123.                 return deleteFirst();
  124.             else {
  125.                 DLLNode<E> tmp = last;
  126.                 last = last.pred;
  127.                 last.succ = null;
  128.                 return tmp.element;
  129.             }
  130.         }
  131.         // else throw Exception
  132.         return null;
  133.     }
  134.  
  135.     public E delete(DLLNode<E> node) {
  136.         if (node == first) {
  137.             deleteFirst();
  138.             return node.element;
  139.         }
  140.         if (node == last) {
  141.             deleteLast();
  142.             return node.element;
  143.         }
  144.         node.pred.succ = node.succ;
  145.         node.succ.pred = node.pred;
  146.         return node.element;
  147.  
  148.     }
  149.  
  150.     @Override
  151.     public String toString() {
  152.         String ret = new String();
  153.         if (first != null) {
  154.             DLLNode<E> tmp = first;
  155.             ret += tmp + "<->";
  156.             while (tmp.succ != null) {
  157.                 tmp = tmp.succ;
  158.                 ret += tmp + "<->";
  159.             }
  160.         } else
  161.             ret = "Prazna lista!!!";
  162.         return ret;
  163.     }
  164.  
  165.     public String toStringR() {
  166.         String ret = new String();
  167.         if (last != null) {
  168.             DLLNode<E> tmp = last;
  169.             ret += tmp + "<->";
  170.             while (tmp.pred != null) {
  171.                 tmp = tmp.pred;
  172.                 ret += tmp + "<->";
  173.             }
  174.         } else
  175.             ret = "Prazna lista!!!";
  176.         return ret;
  177.     }
  178.  
  179.     public DLLNode<E> getFirst() {
  180.         return first;
  181.     }
  182.  
  183.     public DLLNode<E> getLast() {
  184.  
  185.         return last;
  186.     }
  187.  
  188.     /*
  189.      * public void sortiraj_opagacki(DLL<Integer> lista) {
  190.      *
  191.      * int n = lista.length();
  192.      *
  193.      * for (int i = 0; i < n; i++) { DLLNode<Integer> temp = lista.getFirst();
  194.      *
  195.      * while (temp.succ != null) { if (temp.element < temp.succ.element) { int
  196.      * tempData;
  197.      *
  198.      * tempData = temp.element; temp.element = temp.succ.element; temp.succ.element
  199.      * = tempData;
  200.      *
  201.      * } temp = temp.succ; } } }
  202.      */
  203.  
  204. }
  205.  
  206. public class ParNepar {
  207.  
  208.     public static void podeliParnost(DLL<Integer> neparni, DLL<Integer> parni, DLL<Integer> finalna1) {
  209.         DLLNode<Integer> head = neparni.getFirst();
  210.         DLLNode<Integer> head2 = parni.getFirst();
  211.  
  212.         DLLNode<Integer> temp = neparni.getFirst();
  213.  
  214.         while (temp != null) {
  215.  
  216.             if (head.element % 2 != 0) {
  217.                 finalna1.insertLast(head.element);
  218.             }
  219.  
  220.             if (head2.element % 2 == 0) {
  221.                 finalna1.insertLast(head2.element);
  222.             }
  223.  
  224.             head = head.succ;
  225.             head2 = head2.succ;
  226.  
  227.             temp = temp.succ;
  228.         }
  229.  
  230.     }
  231.  
  232.     public static void sortiraj(DLL<Integer> finalna) {
  233.         DLLNode<Integer> momentalen = finalna.getFirst();
  234.  
  235.             while (momentalen != null) {
  236.  
  237.                 DLLNode<Integer> sleden = momentalen.succ;
  238.  
  239.                 if (momentalen.succ != null) {
  240.                     sleden = momentalen.succ;
  241.                 }
  242.  
  243.                 while (sleden != null) {
  244.  
  245.                     if (sleden.element > momentalen.element) {
  246.                        
  247.                         finalna.insertBefore(sleden.element, momentalen);
  248.                         finalna.delete(sleden);
  249.  
  250.                     }
  251.  
  252.                     sleden = sleden.succ;
  253.                 }
  254.  
  255.                 momentalen = momentalen.succ;
  256.             }
  257.     }
  258.    
  259.  
  260.     public static void main(String[] args) throws IOException {
  261.         DLL<Integer> lista1 = new DLL<Integer>(), lista2 = new DLL<Integer>(), finalna = new DLL<Integer>();
  262.  
  263.         BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  264.         // vnesvenje na dolzinite na listata
  265.         String s = stdin.readLine();
  266.         String[] pomniza = s.split(" ");
  267.         int n = Integer.parseInt(pomniza[0]);
  268.         int m = Integer.parseInt(pomniza[1]);
  269.  
  270.         // polnenje na lista1
  271.         s = stdin.readLine();
  272.         String[] niza = s.split(" ");
  273.         for (int i = 0; i < n; i++) {
  274.             lista1.insertLast(Integer.parseInt(niza[i]));
  275.         }
  276.  
  277.         // polnenje na lista2
  278.         s = stdin.readLine();
  279.         niza = s.split(" ");
  280.         for (int i = 0; i < m; i++) {
  281.             lista2.insertLast(Integer.parseInt(niza[i]));
  282.         }
  283.  
  284.         podeliParnost(lista1, lista2, finalna);
  285.  
  286.         // finalna.sortiraj_opagacki(finalna);
  287.        
  288.         for (int i = 0; i < finalna.length(); i++) {
  289.             sortiraj(finalna);
  290.         }
  291.  
  292.         DLLNode<Integer> temp = finalna.getFirst();
  293.         if (temp != null) {
  294.  
  295.             while (temp != null) {
  296.                 System.out.println(temp.element);
  297.  
  298.                 temp = temp.succ;
  299.             }
  300.         } else {
  301.  
  302.             System.out.println("Prazna lista");
  303.  
  304.         }
  305.     }
  306. }
Add Comment
Please, Sign In to add comment