class
GFG
{
static
class
Node
{
int
data;
Node next;
Node(
int
x)
{
data = x;
next =
null
;
}
};
static
void
printList(Node head)
{
if
(head ==
null
)
return
;
Node temp = head;
do
{
System.out.print( temp.data +
"->"
);
temp = temp.next;
}
while
(temp != head);
System.out.println(head.data );
}
static
Node deleteK(Node head_ref,
int
k)
{
Node head = head_ref;
if
(head ==
null
)
return
null
;
Node curr = head, prev=
null
;
while
(
true
)
{
if
(curr.next == head && curr == head)
break
;
printList(head);
for
(
int
i =
0
; i < k; i++)
{
prev = curr;
curr = curr.next;
}
if
(curr == head)
{
prev = head;
while
(prev.next != head)
prev = prev.next;
head = curr.next;
prev.next = head;
head_ref = head;
}
else
if
(curr.next == head)
{
prev.next = head;
}
else
{
prev.next = curr.next;
}
}
return
head;
}
static
Node insertNode(Node head_ref,
int
x)
{
Node head = head_ref;
Node temp =
new
Node(x);
if
(head ==
null
)
{
temp.next = temp;
head_ref = temp;
return
head_ref;
}
else
{
Node temp1 = head;
while
(temp1.next != head)
temp1 = temp1.next;
temp1.next = temp;
temp.next = head;
}
return
head;
}
public
static
void
main(String args[])
{
Node head =
null
;
head = insertNode(head,
1
);
head = insertNode(head,
2
);
head = insertNode(head,
3
);
head = insertNode(head,
4
);
head = insertNode(head,
5
);
head = insertNode(head,
6
);
head = insertNode(head,
7
);
head = insertNode(head,
8
);
head = insertNode(head,
9
);
int
k =
4
;
head = deleteK(head, k);
}
}