class
LinkedList
{
static
Node head;
static
class
Node
{
int
data;
Node next;
Node(
int
d)
{
data = d;
next =
null
;
}
}
void
deleteNode(Node node, Node n)
{
if
(node == n)
{
if
(node.next ==
null
)
{
System.out.println(
"There is only one node. The list "
+
"can't be made empty "
);
return
;
}
node.data = node.next.data;
n = node.next;
node.next = node.next.next;
System.gc();
return
;
}
Node prev = node;
while
(prev.next !=
null
&&
prev.next != n)
{
prev = prev.next;
}
if
(prev.next ==
null
) {
System.out.println(
"Given node is not present in Linked List"
);
return
;
}
prev.next = prev.next.next;
System.gc();
return
;
}
void
printList(Node head) {
while
(head !=
null
) {
System.out.print(head.data +
" "
);
head = head.next;
}
System.out.println(
""
);
}
public
static
void
main(String[] args) {
LinkedList list =
new
LinkedList();
list.head =
new
Node(
12
);
list.head.next =
new
Node(
15
);
list.head.next.next =
new
Node(
10
);
list.head.next.next.next =
new
Node(
11
);
list.head.next.next.next.next =
new
Node(
5
);
list.head.next.next.next.next.next =
new
Node(
6
);
list.head.next.next.next.next.next.next =
new
Node(
2
);
list.head.next.next.next.next.next.next.next =
new
Node(
3
);
System.out.println(
"Given Linked List :"
);
list.printList(head);
System.out.println(
""
);
System.out.println(
"Deleting node :"
+ head.next.next.data);
list.deleteNode(head, head.next.next);
System.out.println(
"Modified Linked list :"
);
list.printList(head);
System.out.println(
""
);
System.out.println(
"Deleting first Node"
);
list.deleteNode(head, head);
System.out.println(
"Modified Linked List"
);
list.printList(head);
}
}