Advertisement
dzocesrce

[APS] Odd Repeats

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