class
GFG {
static
class
Node {
char
data;
Node next;
};
static
Node newNode(
char
data)
{
Node temp =
new
Node();
temp.data = data;
temp.next =
null
;
return
temp;
}
static
void
append(Node head_ref,
char
new_data)
{
Node new_node =
new
Node();
Node last = head_ref;
new_node.data = new_data;
new_node.next =
null
;
if
(head_ref ==
null
) {
head_ref = new_node;
return
;
}
while
(last.next !=
null
)
last = last.next;
last.next = new_node;
return
;
}
static
void
printList(Node node)
{
while
(node !=
null
) {
System.out.print(node.data +
" "
);
node = node.next;
}
}
static
String decodeList(Node head)
{
Node p = head;
String res =
""
;
int
count;
while
(p !=
null
) {
count =
0
;
char
c = p.data;
if
(p.next !=
null
) {
Node temp = p.next;
if
(temp !=
null
&& temp.data >=
'0'
&& temp.data <=
'9'
) {
while
(temp !=
null
&& temp.data >=
'0'
&& temp.data <=
'9'
) {
count = count *
10
+ (temp.data -
'0'
);
temp = temp.next;
}
p = temp;
}
else
{
count =
1
;
p = p.next;
}
}
else
{
count =
1
;
p = p.next;
}
for
(
int
i =
0
; i < count; i++) {
res += c;
}
}
return
res;
}
public
static
void
main(String args[])
{
Node head = newNode(
'a'
);
head.next = newNode(
'5'
);
head.next.next = newNode(
'b'
);
head.next.next.next = newNode(
'r'
);
System.out.println(decodeList(head));
}
}