// allocate next number sn = newNode.previous.data_row;
// 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();
// Directional Data int [] paperNumbers = newint[N+1];
// Initialize List with consecutive order for (int i = 1; i <= N; i++) {
// Directional Data paperNumbers[i] = sc.nextInt(); cll.InsertFirst(i); }
// show all elements // cll.DisplayAll();
// Starting number int sn = 1;
//balloon Problem for (int i = 0; i<N; i++){ //System.out.println(); //cll.DisplayAll(); //System.out.println(); //System.out.println("sn :" + sn); sn = cll.Balloon(sn, paperNumbers[ValueBeingRemoved]); if (i == N-1)break; System.out.print(" "); }
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(">");
public Node DeleteFirstNode(){ Node temp = first; if(first.next == null){ last = null; }else { first.next.previous = null; } first = first.next; return temp;
}
publicbooleanIsEmpty(){ return (first == null); }
//앞쪽 부터 몇번 리스트를 움직여야 해당 숫자를 없애는지 체크크 publicintStepsFromFirst(int data){ int k = 0; Node Current = first; while (Current != null) { if(Current.data == data) { return k; } Current = Current.next; k++; } return k; }
//given List is not empty; publicvoidRearrangeListToHaveDataFirst(int data){ Node Current = first; while (Current != null){ if(Current.data == data){ break; } // DeleteFirstNode if(first.next == null){ last = null; }else { first.next.previous = null; } first = first.next;