Advertisement
Martina312

reverse

Feb 12th, 2020
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.30 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class ReverseKElements {
  4.     public static SLLNode<Integer> getEl(SLL<Integer> list, int k){
  5.         SLLNode<Integer> tmp=list.getFirst();
  6.         k--;
  7.         while (k!=0){
  8.             k--;
  9.             if(tmp.succ==null){
  10.                 return tmp;
  11.             }
  12.             tmp=tmp.succ;
  13.         }
  14.         return tmp;
  15.     }
  16.     public static void reverse(SLL<Integer> list, int k){
  17.         SLLNode<Integer> tmp=list.getFirst();
  18.         int copyK;
  19.         int orgK=k;
  20.         while (tmp!=null){
  21.             copyK=orgK-1;
  22.             while (copyK!=0){
  23.                 copyK--;
  24.                 SLLNode<Integer> node=getEl(list,k);
  25.                 list.insertBefore(node.element,tmp);
  26.                 list.delete(node);
  27.                 if(tmp.succ==null) break;
  28.             }
  29.             k*=2;
  30.             if(k>list.length()){
  31.                 k=list.length();
  32.             }
  33.             tmp=tmp.succ;
  34.         }
  35.         System.out.println(list);
  36.     }
  37.     public static void main(String[] args) {
  38.         Scanner in=new Scanner(System.in);
  39.         int n=in.nextInt();
  40.  
  41.         SLL<Integer> list=new SLL<>();
  42.         for(int i=0;i<n;i++){
  43.             list.insertLast(in.nextInt());
  44.         }
  45.         int k=in.nextInt();
  46.         reverse(list,k);
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement