Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.41 KB | None | 0 0
  1. Дадена е еднострано поврзана листа чии што јазли содржат по еден природен број. Листата треба да се подели на две резултантни листи, т.ш. во првата листа треба да се сместат сите јазли кои содржат броеви помали или еднакви на просекот на листата (просек на листа претставува математички просек од сите природни броеви кои се јавуваат во листата), а во втората сите јазли кои содржат броеви поголеми од просекот на листата. Јазлите во резултантните листи се додаваат според редоследот по кој се појавуваат во дадената листа.
  2.  
  3. Во првиот ред од влезот е даден бројот на јазли во листата, а во вториот ред се дадени броевите од кои се составени јазлите по редослед во листата. Во првиот ред од излезот треба да се испечатат јазлите по редослед од првата резултантна листа (броеви помали или еднакви на просекот на листата), во вториот ред од втората (броеви поголеми од просекот на листата) .
  4.  
  5. Име на класа (за Java): PodeliSporedProsek
  6.  
  7. Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  8.  
  9. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  10.  
  11.  
  12.  
  13.  
  14. import java.io.BufferedReader;
  15. import java.io.IOException;
  16. import java.io.InputStreamReader;
  17.  
  18. class SLLNode<E> {
  19.     protected E element;
  20.     protected SLLNode<E> succ;
  21.  
  22.     public SLLNode(E elem, SLLNode<E> succ) {
  23.         this.element = elem;
  24.         this.succ = succ;
  25.     }
  26.  
  27.     @Override
  28.     public String toString() {
  29.         return element.toString();
  30.     }
  31. }
  32.  
  33. class SLL<E> {
  34.     private SLLNode<E> first;
  35.  
  36.     public SLL() {
  37.         // Construct an empty SLL
  38.         this.first = null;
  39.     }
  40.  
  41.     public void deleteList() {
  42.         first = null;
  43.     }
  44.  
  45.     public int length() {
  46.         int ret;
  47.         if (first != null) {
  48.             SLLNode<E> tmp = first;
  49.             ret = 1;
  50.             while (tmp.succ != null) {
  51.                 tmp = tmp.succ;
  52.                 ret++;
  53.             }
  54.             return ret;
  55.         } else
  56.             return 0;
  57.  
  58.     }
  59.  
  60.     @Override
  61.     public String toString() {
  62.         String ret = new String();
  63.         if (first != null) {
  64.             SLLNode<E> tmp = first;
  65.             ret += tmp + "->";
  66.             while (tmp.succ != null) {
  67.                 tmp = tmp.succ;
  68.                 ret += tmp + "->";
  69.             }
  70.         } else
  71.             ret = "Prazna lista!!!";
  72.         return ret;
  73.     }
  74.  
  75.     public void insertFirst(E o) {
  76.         SLLNode<E> ins = new SLLNode<E>(o, first);
  77.         first = ins;
  78.     }
  79.  
  80.     public void insertAfter(E o, SLLNode<E> node) {
  81.         if (node != null) {
  82.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  83.             node.succ = ins;
  84.         } else {
  85.             System.out.println("Dadenot jazol e null");
  86.         }
  87.     }
  88.  
  89.     public void insertBefore(E o, SLLNode<E> before) {
  90.        
  91.         if (first != null) {
  92.             SLLNode<E> tmp = first;
  93.             if(first==before){
  94.                 this.insertFirst(o);
  95.                 return;
  96.             }
  97.             //ako first!=before
  98.             while (tmp.succ != before)
  99.                 tmp = tmp.succ;
  100.             if (tmp.succ == before) {
  101.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  102.                 tmp.succ = ins;
  103.             } else {
  104.                 System.out.println("Elementot ne postoi vo listata");
  105.             }
  106.         } else {
  107.             System.out.println("Listata e prazna");
  108.         }
  109.     }
  110.  
  111.     public void insertLast(E o) {
  112.         if (first != null) {
  113.             SLLNode<E> tmp = first;
  114.             while (tmp.succ != null)
  115.                 tmp = tmp.succ;
  116.             SLLNode<E> ins = new SLLNode<E>(o, null);
  117.             tmp.succ = ins;
  118.         } else {
  119.             insertFirst(o);
  120.         }
  121.     }
  122.  
  123.     public E deleteFirst() {
  124.         if (first != null) {
  125.             SLLNode<E> tmp = first;
  126.             first = first.succ;
  127.             return tmp.element;
  128.         } else {
  129.             System.out.println("Listata e prazna");
  130.             return null;
  131.         }
  132.     }
  133.  
  134.     public E delete(SLLNode<E> node) {
  135.         if (first != null) {
  136.             SLLNode<E> tmp = first;
  137.             if(first ==node){
  138.                 return this.deleteFirst();
  139.             }
  140.             while (tmp.succ != node && tmp.succ.succ != null)
  141.                 tmp = tmp.succ;
  142.             if (tmp.succ == node) {
  143.                 tmp.succ = tmp.succ.succ;
  144.                 return node.element;
  145.             } else {
  146.                 System.out.println("Elementot ne postoi vo listata");
  147.                 return null;
  148.             }
  149.         } else {
  150.             System.out.println("Listata e prazna");
  151.             return null;
  152.         }
  153.  
  154.     }
  155.  
  156.     public SLLNode<E> getFirst() {
  157.         return first;
  158.     }
  159.    
  160.     public SLLNode<E> find(E o) {
  161.         if (first != null) {
  162.             SLLNode<E> tmp = first;
  163.             while (tmp.element != o && tmp.succ != null)
  164.                 tmp = tmp.succ;
  165.             if (tmp.element == o) {
  166.                 return tmp;
  167.             } else {
  168.                 System.out.println("Elementot ne postoi vo listata");
  169.             }
  170.         } else {
  171.             System.out.println("Listata e prazna");
  172.         }
  173.         return first;
  174.     }
  175.    
  176. }
  177.  
  178. public class PodeliSporedProsek {
  179.    
  180.     public static void podeli(SLL<Integer> lista){
  181.         SLL<Integer> pomali = new SLL<Integer>(), pogolemi = new SLL<Integer>();
  182.        
  183.         /*
  184.          *
  185.          * Vasiot kod tuka
  186.          *
  187.          * */
  188.        
  189.         //Pechatenje na pomali i ednakvi od prosekot
  190.         SLLNode<Integer> pom = pomali.getFirst();
  191.         while (pom!=null) {
  192.             System.out.print(pom.element);
  193.             if(pom.succ!=null)
  194.                 System.out.print(" ");
  195.             pom = pom.succ;
  196.         }
  197.         System.out.println();
  198.        
  199.         //Pechatenje na pogolemi od prosekot
  200.         pom = pogolemi.getFirst();
  201.         while (pom!=null) {
  202.             System.out.print(pom.element);
  203.             if(pom.succ!=null)
  204.                 System.out.print(" ");
  205.             pom = pom.succ;
  206.         }
  207.         System.out.println();
  208.        
  209.     }
  210.    
  211.     public static void main(String[] args) throws IOException{
  212.         SLL<Integer> lista = new SLL<Integer>();
  213.         BufferedReader stdin = new BufferedReader(new InputStreamReader(
  214.                 System.in));
  215.         String s = stdin.readLine();
  216.         int N = Integer.parseInt(s);
  217.         s = stdin.readLine();
  218.         String[] pomniza = s.split(" ");
  219.         for (int i = 0; i < N; i++) {
  220.             lista.insertLast(Integer.parseInt(pomniza[i]));
  221.         }
  222.        
  223.         podeli(lista);
  224.  
  225.     }
  226. }
  227.  
  228. Sample input
  229. 5
  230. 4 2 1 5 3
  231. Sample output
  232. 2 1 3
  233. 4 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement