Advertisement
dzocesrce

[APS] Keep M & Delete N Nodes

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