class
ListNode {
int
value;
ListNode next;
}
class
GFG {
private
static
int
carry =
0
;
public
static
ListNode addValue(ListNode head,
int
addValue)
{
addNewValue(head, addValue);
if
(carry !=
0
) {
ListNode newHead =
new
ListNode();
newHead.value = carry;
newHead.next = head;
carry =
0
;
return
newHead;
}
else
{
return
head;
}
}
private
static
void
addNewValue(ListNode head,
int
addValue)
{
if
(head.next ==
null
) {
int
val = head.value + addValue;
head.value = val %
10
;
carry = val /
10
;
}
else
{
int
val = head.value;
addNewValue(head.next, addValue);
val = val + carry;
head.value = val %
10
;
carry = val /
10
;
}
}
private
static
void
printList(ListNode node)
{
while
(node !=
null
) {
System.out.print(node.value +
" -> "
);
node = node.next;
}
System.out.print(
"NULL"
);
}
public
static
void
main(String[] args)
{
ListNode head =
new
ListNode();
head.value =
9
;
head.next =
new
ListNode();
head.next.value =
9
;
head.next.next =
new
ListNode();
head.next.next.value =
3
;
head.next.next.next =
null
;
int
n =
7
;
head = addValue(head, n);
printList(head);
}
}