Advertisement
Mitrezzz

[АПС] Лаб 2 - Спој листи наизменично

Nov 9th, 2020
924
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.26 KB | None | 0 0
  1. Дадени се две еднострано поврзани листи чии што јазли содржат по еден природен број. Треба да се спојат двете листи во една резултантна на тој начин што наизменично прво ќе се додаваат првите два јазли од првата листа во резултантната, па првите два од втората листа, па следните два од првата, па следните два од втората итн. Јазлите што ќе останат треба да се додадат на крај во резултантната листа, прво оние што останале од првата листа, потоа оние што останале од втората листа.
  2.  
  3. Во првиот ред од влезот се дадени броевите од кои се составени јазлите по редослед во првата листа, а во вториот ред броевите од кои се составени јазлите по редослед во втората листа. На излез треба да се испечатат јазлите по редослед во резултантната споена листа.
  4.  
  5. Забелешка: Да се креира податочна структура еднострано поврзана листа и истата да се искористи во задачата.
  6.  
  7. Влез:
  8. 4
  9. 1 2 3 4
  10. 3
  11. 5 6 7
  12.  
  13. Излез:
  14. 1 2 5 6 3 4 7
  15.  
  16.  
  17. import java.io.BufferedReader;
  18. import java.io.IOException;
  19. import java.io.InputStreamReader;
  20.  
  21. class SLLNode<E>
  22. {
  23.     E element;
  24.     SLLNode<E> succ;
  25.    
  26.     SLLNode(){}
  27.     SLLNode(E element, SLLNode<E> succ)
  28.     {
  29.         this.element=element;
  30.         this.succ=succ;
  31.     }
  32. }
  33. class SLL<E>
  34. {
  35.     SLLNode<E> first;
  36.     SLL()
  37.     {
  38.         first=null;
  39.     }
  40.     public void insertFirst(E element)
  41.     {
  42.         SLLNode<E> nov = new SLLNode<>(element,first);
  43.         first = nov;
  44.     }
  45.     public void insertLast(E element)
  46.     {
  47.         if(first==null) insertFirst(element);
  48.         else
  49.         {
  50.             SLLNode<E> dvizi = first;
  51.             while(dvizi.succ != null)
  52.             {
  53.                 dvizi = dvizi.succ;
  54.             }
  55.         SLLNode<E> last = new SLLNode<>(element,null);
  56.         dvizi.succ=last;
  57.         }
  58.     }
  59.     public void insertAfter(E element, SLLNode<E>node)
  60.     {
  61.         if(node!=null){
  62.             SLLNode<E> nov = new SLLNode<>(element,node.succ);
  63.             node.succ = nov;
  64.         }
  65.     }
  66.    
  67.     public int getLength()
  68.     {
  69.         SLLNode<E> dvizi = first;
  70.         int length = 0;
  71.         while(dvizi!=null)
  72.         {
  73.             length++;
  74.             dvizi = dvizi.succ;
  75.         }
  76.         return length;
  77.     }
  78.    
  79.    
  80.     public String toString()
  81.     {
  82.         String s = new String();
  83.         SLLNode<E> dvizi = first;
  84.         while(dvizi!=null)
  85.         {
  86.             s = s+dvizi.element+" ";
  87.             dvizi=dvizi.succ;
  88.         }
  89.         return s;
  90.     }
  91.     public SLLNode<E> getFirst()
  92.     {
  93.         return first;
  94.     }
  95.    
  96. }
  97.  
  98. public class SpecialSLLJoin {
  99.    
  100.     private static SLL<Integer> specialJoin(SLL<Integer> lista1,
  101.             SLL<Integer> lista2) {
  102.        
  103.         SLL<Integer> spoenaLista = new SLL<>();
  104.         SLLNode<Integer> firstL1 = lista1.getFirst();
  105.         SLLNode<Integer> firstL2 = lista2.getFirst();
  106.         int br1,br2;
  107.        
  108.         while((firstL1 != null)||(firstL2!=null))
  109.         {
  110.             br1=0;br2=0;
  111.             while((firstL1!=null)&&(br1!=2))
  112.             {
  113.                 spoenaLista.insertLast(firstL1.element);
  114.                 firstL1 = firstL1.succ;
  115.                 br1++;
  116.             }
  117.             while((firstL2!=null)&&(br2!=2))
  118.             {
  119.                 spoenaLista.insertLast(firstL2.element);
  120.                 firstL2 = firstL2.succ;
  121.                 br2++;
  122.             }
  123.         }
  124.         return spoenaLista;
  125.     }
  126.    
  127.    
  128.     public static void main(String[] args) throws IOException{
  129.        
  130.         SLL<Integer> lista1 = new SLL<>();
  131.         SLL<Integer> lista2 = new SLL<>();
  132.    
  133.         BufferedReader stdin = new BufferedReader(new InputStreamReader(
  134.                 System.in));
  135.         String s = stdin.readLine();
  136.         int N = Integer.parseInt(s);
  137.         s = stdin.readLine();
  138.         String[] pomniza = s.split(" ");
  139.         for (int i = 0; i < N; i++) {
  140.             lista1.insertLast(Integer.parseInt(pomniza[i]));
  141.         }
  142.  
  143.         s = stdin.readLine();
  144.         N = Integer.parseInt(s);
  145.         s = stdin.readLine();
  146.         pomniza = s.split(" ");
  147.         for (int i = 0; i < N; i++) {
  148.             lista2.insertLast(Integer.parseInt(pomniza[i]));
  149.         }
  150.        
  151.         SLL<Integer> spoeni = specialJoin(lista1,lista2);
  152.         System.out.println(spoeni);
  153.        
  154.     }
  155.  
  156.    
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement