Advertisement
dzocesrce

[APS] List Transformation

Aug 26th, 2023
631
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.98 KB | None | 0 0
  1. // septemvri 2022
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Scanner;
  7.  
  8. class SLLNode<E> {
  9.     protected E element;
  10.     protected SLLNode<E> succ;
  11.  
  12.     public SLLNode(E elem, SLLNode<E> succ) {
  13.         this.element = elem;
  14.         this.succ = succ;
  15.     }
  16.  
  17.     @Override
  18.     public String toString() {
  19.         return element.toString();
  20.     }
  21. }
  22.  
  23. class SLL<E> {
  24.     private SLLNode<E> first;
  25.  
  26.     public SLL() {
  27.         // Construct an empty SLL
  28.         this.first = null;
  29.     }
  30.  
  31.     public void deleteList() {
  32.         first = null;
  33.     }
  34.  
  35.     public int length() {
  36.         int ret;
  37.         if (first != null) {
  38.             SLLNode<E> tmp = first;
  39.             ret = 1;
  40.             while (tmp.succ != null) {
  41.                 tmp = tmp.succ;
  42.                 ret++;
  43.             }
  44.             return ret;
  45.         } else
  46.             return 0;
  47.  
  48.     }
  49.     @Override
  50.     public String toString() {
  51.         String ret = new String();
  52.         if (first != null) {
  53.             SLLNode<E> tmp = first;
  54.             ret += tmp + " -> ";
  55.             while (tmp.succ != null) {
  56.                 tmp = tmp.succ;
  57.                 if(tmp.succ==null){
  58.                     ret+= tmp;
  59.                     break;
  60.                 }
  61.                 ret += tmp + " -> ";
  62.             }
  63.         } else
  64.             ret = "";
  65.         return ret;
  66.     }
  67.  
  68.     public void insertFirst(E o) {
  69.         SLLNode<E> ins = new SLLNode<E>(o, first);
  70.         first = ins;
  71.     }
  72.  
  73.     public void insertAfter(E o, SLLNode<E> node) {
  74.         if (node != null) {
  75.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  76.             node.succ = ins;
  77.         }
  78.     }
  79.  
  80.     public void insertBefore(E o, SLLNode<E> before) {
  81.  
  82.         if (first != null) {
  83.             SLLNode<E> tmp = first;
  84.             if(first==before){
  85.                 this.insertFirst(o);
  86.                 return;
  87.             }
  88.             //ako first!=before
  89.             while (tmp.succ != before)
  90.                 tmp = tmp.succ;
  91.             if (tmp.succ == before) {
  92.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  93.                 tmp.succ = ins;
  94.             } else {
  95.                 System.out.println("Elementot ne postoi vo listata");
  96.             }
  97.         } else {
  98.             System.out.println("Listata e prazna");
  99.         }
  100.     }
  101.     public void insertLast(E o) {
  102.         if (first != null) {
  103.             SLLNode<E> tmp = first;
  104.             while (tmp.succ != null)
  105.                 tmp = tmp.succ;
  106.             SLLNode<E> ins = new SLLNode<E>(o, null);
  107.             tmp.succ = ins;
  108.         } else {
  109.             insertFirst(o);
  110.         }
  111.     }
  112.  
  113.     public E deleteFirst() {
  114.         if (first != null) {
  115.             SLLNode<E> tmp = first;
  116.             first = first.succ;
  117.             return tmp.element;
  118.         } else {
  119.             System.out.println("Listata e prazna");
  120.             return null;
  121.         }
  122.     }
  123.  
  124.     public E delete(SLLNode<E> node) {
  125.         if (first != null) {
  126.             SLLNode<E> tmp = first;
  127.             if(first ==node){
  128.                 return this.deleteFirst();
  129.             }
  130.             while (tmp.succ != node && tmp.succ.succ != null)
  131.                 tmp = tmp.succ;
  132.             if (tmp.succ == node) {
  133.                 tmp.succ = tmp.succ.succ;
  134.                 return node.element;
  135.             } else {
  136.                 return null;
  137.             }
  138.         } else {
  139.             return null;
  140.         }
  141.  
  142.     }
  143.  
  144.     public SLLNode<E> getFirst() {
  145.         return first;
  146.     }
  147.     public SLLNode<E> find(E o) {
  148.         if (first != null) {
  149.             SLLNode<E> tmp = first;
  150.             while (tmp.element != o && tmp.succ != null)
  151.                 tmp = tmp.succ;
  152.             if (tmp.element == o) {
  153.                 return tmp;
  154.             }
  155.         }
  156.         return first;
  157.     }
  158. }
  159.  
  160. public class listTransformation {
  161.     public static void main(String[] args) {
  162.         Scanner input= new Scanner(System.in);
  163.         int n= Integer.parseInt(input.nextLine());
  164.         SLL<Integer> lista= new SLL<Integer>();
  165.         String[] broevi= input.nextLine().split("\\s+");
  166.         for(int i=0;i<n;i++){
  167.             lista.insertLast(Integer.parseInt(broevi[i]));
  168.         }
  169.         SLL<Integer> lista_parni= new SLL<Integer>();
  170.         SLL<Integer> lista_neparni= new SLL<Integer>();
  171.         SLLNode<Integer> temp= lista.getFirst();
  172.         while(temp!=null){
  173.             if(temp.element%2==0){
  174.                 lista_parni.insertLast(temp.element);
  175.                 lista.delete(temp);
  176.             }
  177.             else{
  178.                 lista_neparni.insertLast(temp.element);
  179.                 lista.delete(temp);
  180.             }
  181.             temp=temp.succ;
  182.         }
  183.         System.out.println(lista_neparni.toString());
  184.         System.out.println(lista_parni.toString());
  185.     }
  186. }
  187.  
  188. /*
  189. TestCase
  190. 14
  191. 1 5 2 3 0 6 4 3 7 9 1 4 6 8
  192. 1 -> 5 -> 3 -> 3 -> 7 -> 9 -> 1
  193. 2 -> 0 -> 6 -> 4 -> 4 -> 6 -> 8
  194. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement