while (newNode.data != sn){ newNode = newNode.previous; }
// find data with d distance away while (counter != d){ newNode = newNode.previous; ++counter; }
// print number being deleted System.out.print(newNode.data);
// allocate next number sn = newNode.previous.data;
// delete corresponding Node // when newNode is last if(newNode == last){ newNode.next.previous = newNode.previous; newNode.previous.next = newNode.next; last = newNode.previous; }else { newNode.next.previous = newNode.previous; }
// when newNode is first if(newNode == first){ newNode.next.previous = newNode.previous; newNode.previous.next = newNode.next; first = newNode.next; }else { newNode.previous.next = newNode.next; }
return sn;
} }
publicstaticvoidmain(String[] args)throws Exception { CustomLinkedList cll = new CustomLinkedList();
Scanner sc = new Scanner(System.in);
// Number of Elements in the list int N = sc.nextInt();
// Number of Elements to be jumped int K = sc.nextInt();
// Initialize List with consecutive order for (int i = 1; i <= N; i++) { cll.InsertFirst(i); }
// show all elements //cll.DisplayAll();
// Starting number int sn = 1;
//Josephus Problem
System.out.print("<"); for (int i = 0; i<N; i++){ //cll.DisplayAll(); //System.out.println(); sn = cll.Josephus(sn, K); if (i == N-1)break; System.out.print(", "); } System.out.print(">");