Advertisement
dzocesrce

[APS] Duplicate Deletion

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