import
java.io.*;
import
java.util.*;
class
VListNode {
VListNode next;
List<Integer> list;
public
VListNode()
{
next =
null
;
list =
new
ArrayList<Integer>();
}
}
class
VList {
private
VListNode start;
private
VListNode end;
private
int
nodeNumber;
private
int
size;
public
VList()
{
start =
null
;
end =
null
;
nodeNumber =
0
;
size =
0
;
}
public
boolean
isEmpty() {
return
start ==
null
; }
public
void
getSize()
{
System.out.println(
"VList size : "
+ size);
System.out.println();
}
public
void
clearVList()
{
start =
null
;
end =
null
;
nodeNumber =
0
;
size =
0
;
System.out.println(
"VList is Cleared"
);
System.out.println();
}
public
void
insert(
int
x)
{
size++;
int
n = (
int
)Math.pow(
2
, nodeNumber);
if
(start ==
null
) {
start =
new
VListNode();
start.list.add(x);
end = start;
return
;
}
if
(end.list.size() +
1
<= n) {
end.list.add(x);
}
else
{
nodeNumber++;
VListNode tempNode =
new
VListNode();
tempNode.list.add(x);
end.next = tempNode;
end = tempNode;
}
}
public
void
searchElementWithPosition(
int
k)
{
System.out.print(
"Element at position "
+ k
+
" is = "
);
if
(k <
1
|| k > size) {
System.out.println(
"Does not Exist"
);
System.out.println();
return
;
}
k--;
VListNode startTemp = start;
while
(k >= startTemp.list.size()) {
k -= startTemp.list.size();
startTemp = startTemp.next;
}
System.out.println(startTemp.list.get(k));
System.out.println();
}
public
void
displayVList()
{
System.out.print(
"VList : "
);
if
(size ==
0
) {
System.out.print(
"empty\n"
);
return
;
}
System.out.println();
VListNode startTemp = start;
int
num =
0
;
while
(startTemp !=
null
) {
for
(
int
i =
0
; i < startTemp.list.size();
i++) {
System.out.print(startTemp.list.get(i)
+
" "
);
}
System.out.println();
startTemp = startTemp.next;
num++;
}
System.out.println();
}
}
class
GFG {
public
static
void
main(String[] args)
{
VList vlist =
new
VList();
int
[] arr
=
new
int
[] {
9
,
1
,
5
,
4
,
3
,
5
,
2
,
1
,
0
,
8
};
for
(
int
val : arr) {
vlist.insert(val);
}
vlist.displayVList();
vlist.searchElementWithPosition(
1
);
vlist.searchElementWithPosition(
5
);
vlist.searchElementWithPosition(
8
);
vlist.getSize();
vlist.clearVList();
System.out.println(
"Vlist IsEmpty = "
+ vlist.isEmpty());
}
}