Advertisement
dzocesrce

[APS] Delete Middle N Times

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