import
java.io.*;
public
class
GFG {
public
class
Node {
int
data;
Node next;
public
Node(
int
data) {
this
.data = data; }
}
public
Node head_of_node =
null
;
public
Node last =
null
;
public
int
length_of_list;
public
void
add(
int
data)
{
Node newNode =
new
Node(data);
if
(head_of_node ==
null
) {
head_of_node = newNode;
last = newNode;
newNode.next = head_of_node;
}
else
{
last.next = newNode;
last = newNode;
last.next = head_of_node;
}
length_of_list++;
}
public
void
Insert_In_Middle(
int
data)
{
Node New_node =
new
Node(data);
if
(head_of_node ==
null
) {
head_of_node = New_node;
last = New_node;
New_node.next = head_of_node;
}
else
{
Node temporary;
Node current;
int
mid_point_check = (length_of_list %
2
);
if
(mid_point_check ==
0
) {
length_of_list = length_of_list /
2
;
}
else
{
length_of_list = (length_of_list +
1
) /
2
;
}
temporary = head_of_node;
current =
null
;
while
(length_of_list >
0
) {
current = temporary;
temporary = temporary.next;
length_of_list -=
1
;
}
current.next = New_node;
New_node.next = temporary;
}
length_of_list++;
}
public
void
Print_List()
{
Node current = head_of_node;
if
(head_of_node ==
null
) {
System.out.println(
"Your list is empty"
);
}
else
{
do
{
System.out.print(
" "
+ current.data);
current = current.next;
}
while
(current != head_of_node);
System.out.println();
}
}
public
static
void
main(String[] args)
{
GFG circular_list =
new
GFG();
circular_list.add(
10
);
circular_list.add(
20
);
circular_list.add(
30
);
circular_list.add(
40
);
System.out.print(
"Original List --> "
);
circular_list.Print_List();
circular_list.Insert_In_Middle(
60
);
System.out.print(
"List after Inserting --> "
);
circular_list.Print_List();
}
}