import
java.io.*;
import
java.util.*;
class
SelfOrganizingList
{
int
value;
SelfOrganizingList next;
SelfOrganizingList (
int
number)
{
value = number;
next =
null
;
}
}
class
Main
{
static
SelfOrganizingList head =
null
, rear =
null
;
static
void
insertSelfOrganizingList (
int
number)
{
SelfOrganizingList temp =
new
SelfOrganizingList (number);
if
(head ==
null
)
head = rear = temp;
else
{
rear.next = temp;
rear = temp;
}
}
static
boolean
searchSelfOrganizingList (
int
key)
{
SelfOrganizingList current = head;
SelfOrganizingList prev =
null
;
SelfOrganizingList prev_prev =
null
;
while
(current !=
null
)
{
if
(current.value == key)
{
if
(prev_prev !=
null
)
{
prev_prev.next = current;
prev.next = current.next;
current.next = prev;
}
else
if
(prev !=
null
)
{
prev.next = current.next;
current.next = prev;
head = current;
}
return
true
;
}
prev_prev = prev;
prev = current;
current = current.next;
}
return
false
;
}
static
void
display ()
{
if
(head ==
null
)
{
System.out.println (
"List is empty"
);
return
;
}
SelfOrganizingList temp = head;
System.out.print (
"List: "
);
while
(temp !=
null
)
{
System.out.print (temp.value);
if
(temp.next !=
null
)
System.out.print (
" --> "
);
temp = temp.next;
}
System.out.println (
"\n"
);
}
public
static
void
main (String[]args)
{
insertSelfOrganizingList (
1
);
insertSelfOrganizingList (
2
);
insertSelfOrganizingList (
3
);
insertSelfOrganizingList (
4
);
insertSelfOrganizingList (
5
);
insertSelfOrganizingList (
6
);
display ();
if
(searchSelfOrganizingList (
4
))
System.out.println (
"Searched: 4"
);
else
System.out.println (
"Not Found: 4"
);
display ();
if
(searchSelfOrganizingList (
5
))
System.out.println (
"Searched: 5"
);
else
System.out.println (
"Not Found: 5"
);
display ();
}
}