Advertisement
Guest User

nedoresena

a guest
Oct 25th, 2014
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.72 KB | None | 0 0
  1. Спој листи Problem 2 (5 / 5)
  2. Дадени се две еднострано поврзани листи чии јазли содржат по еден природен број. Листите се сортирани во растечки редослед. Треба да се спојат двете листи во една така што резултантната листа да е сортирана. Сортирањето е подредување со слевање. Јазлите кои се јавуваат како дупликати (од иста листа или од различна) да се отстранат.
  3.  
  4. Во првиот ред од влезот е даден бројот на јазли во првата листа, потоа во вториот ред се дадени броевите од кои се составени јазлите по редослед во првата листа, па во третиот ред е даден бројот на јазли во втората листа, и на крај во четвртиот ред броевите од кои се составени јазлите по редослед во втората листа. На излез треба да се испечатат јазлите по редослед во резултантната споена листа.
  5.  
  6. Име на класата (Java): SLLJoinLists
  7.  
  8. Забелешка: Да се креира податочна структура еднострано поврзана листа и истата да се искористи во задачата.
  9.  
  10. package probno;
  11.  
  12. import java.io.BufferedReader;
  13. import java.io.IOException;
  14. import java.io.InputStreamReader;
  15.  
  16. /**
  17.  *
  18.  * @author Sandra
  19.  */
  20. public class SLLJoinLists<E extends Comparable<E>> {
  21.    
  22.     public static class SLLNode<E> {
  23.         protected E element;
  24.         protected SLLNode<E> succ;
  25.  
  26.         public SLLNode(E value, SLLNode<E> succ) {
  27.             this.element = value;
  28.             this.succ = succ;
  29.         }
  30.  
  31.         public E getElement() {
  32.             return element;
  33.         }
  34.     }
  35.    
  36.     public static class SLL<E> {
  37.         private SLLNode<E> first;
  38.  
  39.         public SLL() {
  40.             this.first = null;
  41.         }
  42.  
  43.         public SLLNode<E> getFirst() {
  44.             return first;
  45.         }
  46.        
  47.         public void insertFirst(E o){
  48.             SLLNode<E> ins = new SLLNode<E>(o,first);
  49.             first = ins;
  50.         }
  51.          
  52.         public void insertLast(E o){
  53.             if(first!=null){
  54.                 SLLNode<E> pom1 = first;
  55.                 while(pom1.succ!=null){
  56.                     pom1 = pom1.succ;
  57.                 }
  58.                 SLLNode<E> ins = new SLLNode<E>(o,null);
  59.                 pom1.succ = ins;
  60.             }
  61.             else{
  62.                 insertFirst(o);
  63.             }
  64.         }
  65.     }
  66.    
  67.         public SLL<E> joinLists(SLL<E> lista1, SLL<E> lista2){
  68.             SLL<E> lista3 = new SLL<E>();
  69.             SLLNode<E> jazol1 = lista1.getFirst(), jazol2 = lista2.getFirst();
  70.            
  71.             while(jazol1 != null && jazol2 != null){
  72.                 if(jazol1.element.compareTo(jazol2.element)<0){
  73.                     lista3.insertLast(jazol1.element);
  74.                     jazol1 = jazol1.succ;
  75.                 }
  76.                 else{
  77.                     lista3.insertLast(jazol2.element);
  78.                     jazol2 = jazol2.succ;
  79.                 }
  80.             }
  81.             if(jazol1!=null){
  82.                 while(jazol1!=null){
  83.                     lista3.insertLast(jazol1.element);
  84.                     jazol1 = jazol1.succ;
  85.                 }
  86.             }
  87.             if(jazol2!=null){
  88.                 while(jazol2!=null){
  89.                     lista3.insertLast(jazol2.element);
  90.                     jazol2 = jazol2.succ;
  91.                 }
  92.             }
  93.         return lista3;
  94.     }
  95.    
  96.    
  97.    
  98.    
  99.         public static void main(String[] args) throws IOException {
  100.        
  101.     BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  102.    
  103.         String s = stdin.readLine();
  104.         int N = Integer.parseInt(s);
  105.     s = stdin.readLine();
  106.         String[] pomniza = s.split(" ");
  107.        
  108.         SLL<Integer> lista1 = new SLL<Integer>();
  109.        
  110.             for (int i = 0; i < N; i++) {
  111.             lista1.insertLast(Integer.parseInt(pomniza[i]));
  112.         }
  113.                
  114.         s = stdin.readLine();
  115.         pomniza = s.split(" ");
  116.        
  117.         SLL<Integer> lista2 = new SLL<Integer>();
  118.        
  119.                 for (int i = 0; i < N; i++) {
  120.             lista2.insertLast(Integer.parseInt(pomniza[i]));
  121.         }
  122.                
  123.         SLL<Integer> lista3 = new SLL<Integer>();
  124.         lista3 = joinLists(lista1, lista2);
  125.    }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement