Crazy

Podeli spored prosek

May 28th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.03 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. class DLL<E> {
  4.     private DLLNode<E> first, last;
  5.  
  6.     public DLL() {
  7.         // Construct an empty SLL
  8.         this.first = null;
  9.         this.last = null;
  10.     }
  11.  
  12.     public void deleteList() {
  13.         first = null;
  14.         last = null;
  15.     }
  16.  
  17.     public int length() {
  18.         int ret;
  19.         if (first != null) {
  20.             DLLNode<E> tmp = first;
  21.             ret = 1;
  22.             while (tmp.succ != null) {
  23.                 tmp = tmp.succ;
  24.                 ret++;
  25.             }
  26.             return ret;
  27.         } else
  28.             return 0;
  29.  
  30.     }
  31.  
  32.     public DLLNode<E> find(E o) {
  33.         if (first != null) {
  34.             DLLNode<E> tmp = first;
  35.             while (tmp.element != o && tmp.succ != null)
  36.                 tmp = tmp.succ;
  37.             if (tmp.element == o) {
  38.                 return tmp;
  39.             } else {
  40.                 System.out.println("Elementot ne postoi vo listata");
  41.             }
  42.         } else {
  43.             System.out.println("Listata e prazna");
  44.         }
  45.         return first;
  46.     }
  47.  
  48.     public void insertFirst(E o) {
  49.         DLLNode<E> ins = new DLLNode<E>(o, null, first);
  50.         if (first == null)
  51.             last = ins;
  52.         else
  53.             first.pred = ins;
  54.         first = ins;
  55.     }
  56.  
  57.     public void insertLast(E o) {
  58.         if (first == null)
  59.             insertFirst(o);
  60.         else {
  61.             DLLNode<E> ins = new DLLNode<E>(o, last, null);
  62.             last.succ = ins;
  63.             last = ins;
  64.         }
  65.     }
  66.  
  67.     public void insertAfter(E o, DLLNode<E> after) {
  68.         if(after==last){
  69.             insertLast(o);
  70.             return;
  71.         }
  72.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  73.         after.succ.pred = ins;
  74.         after.succ = ins;
  75.     }
  76.  
  77.     public void insertBefore(E o, DLLNode<E> before) {
  78.         if(before == first){
  79.             insertFirst(o);
  80.             return;
  81.         }
  82.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  83.         before.pred.succ = ins;
  84.         before.pred = ins;
  85.     }
  86.  
  87.     public E deleteFirst() {
  88.         if (first != null) {
  89.             DLLNode<E> tmp = first;
  90.             first = first.succ;
  91.             if (first != null) first.pred = null;
  92.             if (first == null)
  93.                 last = null;
  94.             return tmp.element;
  95.         } else
  96.             return null;
  97.     }
  98.  
  99.     public E deleteLast() {
  100.         if (first != null) {
  101.             if (first.succ == null)
  102.                 return deleteFirst();
  103.             else {
  104.                 DLLNode<E> tmp = last;
  105.                 last = last.pred;
  106.                 last.succ = null;
  107.                 return tmp.element;
  108.             }
  109.         }
  110.         // else throw Exception
  111.         return null;
  112.     }
  113.  
  114.     public E delete(DLLNode<E> node) {
  115.         if(node==first){
  116.             deleteFirst();
  117.             return node.element;
  118.         }
  119.         if(node==last){
  120.             deleteLast();
  121.             return node.element;
  122.         }
  123.         node.pred.succ = node.succ;
  124.         node.succ.pred = node.pred;
  125.         return node.element;
  126.  
  127.     }
  128.  
  129.     @Override
  130.     public String toString() {
  131.         String ret = new String();
  132.         if (first != null) {
  133.             DLLNode<E> tmp = first;
  134.             ret += tmp + " ";
  135.             while (tmp.succ != null) {
  136.                 tmp = tmp.succ;
  137.                 ret += tmp + " ";
  138.             }
  139.         } else
  140.             ret = "Prazna lista!!!";
  141.         return ret;
  142.     }
  143.  
  144.     public String toStringR() {
  145.         String ret = new String();
  146.         if (last != null) {
  147.             DLLNode<E> tmp = last;
  148.             ret += tmp + "<->";
  149.             while (tmp.pred != null) {
  150.                 tmp = tmp.pred;
  151.                 ret += tmp + "<->";
  152.             }
  153.         } else
  154.             ret = "Prazna lista!!!";
  155.         return ret;
  156.     }
  157.  
  158.     public DLLNode<E> getFirst() {
  159.         return first;
  160.     }
  161.  
  162.     public DLLNode<E> getLast() {
  163.  
  164.         return last;
  165.     }
  166.  
  167.  
  168. }
  169.  
  170. class DLLNode<E> {
  171.     protected E element;
  172.     protected DLLNode<E> pred, succ;
  173.  
  174.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  175.         this.element = elem;
  176.         this.pred = pred;
  177.         this.succ = succ;
  178.     }
  179.  
  180.     @Override
  181.     public String toString() {
  182.         return element.toString();
  183.     }
  184. }
  185.  
  186. public class Main {
  187.  
  188.     public static void napraviNesto(DLL<Integer> glavna, DLL<Integer> pomali, DLL<Integer> pogolemi)
  189.     {
  190.  
  191.         DLLNode<Integer> node = glavna.getFirst();
  192.  
  193.         int prosek=0;
  194.         while (node!=null)
  195.         {
  196.             prosek+=node.element;
  197.  
  198.             node=node.succ;
  199.         }
  200.  
  201.         prosek/=glavna.length();
  202.  
  203.         node=glavna.getFirst();
  204.  
  205.         while (node!=null)
  206.         {
  207.             if (node.element<=prosek)
  208.                 pomali.insertFirst(node.element);
  209.             else
  210.                 pogolemi.insertFirst(node.element);
  211.  
  212.             node=node.succ;
  213.         }
  214.  
  215.     }
  216.  
  217.     public static void main(String[] args) {
  218.  
  219.         Scanner in = new Scanner(System.in);
  220.  
  221.         int n= Integer.parseInt(in.nextLine());
  222.  
  223.         DLL<Integer> glavna = new DLL<>(), pomali = new DLL<>(), pogolemi = new DLL<>();
  224.  
  225.         String [] niza = in.nextLine().split(" ");
  226.         for (int i=0;i<n;i++)
  227.             glavna.insertFirst(Integer.valueOf(niza[i]));
  228.  
  229.         napraviNesto(glavna, pomali, pogolemi);
  230.  
  231.  
  232.         System.out.println(pomali.toString() + pogolemi.toString());
  233.  
  234.         /*DLLNode<Integer> pom = pomali.getFirst();
  235.         while (pom!=null) {
  236.             System.out.print(pom.element);
  237.             if(pom.succ!=null)
  238.                 System.out.print(" ");
  239.             pom = pom.succ;
  240.         }
  241.         System.out.println();
  242.  
  243.         //Pechatenje na pogolemi od prosekot
  244.         pom = pogolemi.getFirst();
  245.         while (pom!=null) {
  246.             System.out.print(pom.element);
  247.             if(pom.succ!=null)
  248.                 System.out.print(" ");
  249.             pom = pom.succ;
  250.         }
  251.         System.out.println();*/
  252.  
  253.  
  254.  
  255.     }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment