__author__ = 'nitin'
class Node:
def __init__(self,initdata):
self.data=initdata
self.next=None
def getData(self):
return self.data
def setData(self,item):
self.data=item
def getNext(self):
return self.next
def setNext(self,item):
self.next=item
def add_numbers(n1,n2,carry):
if n1 is None:
return None
while n1.getData() is not None:
res_num=n1.getData() + n2.getData() + carry
if res_num>10:
carry=res_num % 10
new_num=res_num - carry
result_node=Node(new_num)
elif res_num==10:
carry=1
new_num=0
result_node=Node(new_num)
else:
result_node=Node(res_num)
next_node=add_numbers(n1.getNext(), n2.getNext(),carry)
result_node.setNext(next_node)
return result_node
def print_list(result):
current=result
nxt = current.getNext()
print current.getData()
if(nxt is not None):
print_list(nxt)
n0=Node(3)
n1=Node(1)
n2=Node(5)
n0.setNext(n1)
n1.setNext(n2)
n3=Node(5)
n4=Node(9)
n5=Node(2)
n3.setNext(n4)
n4.setNext(n5)
print_list(n0)
print ""
print_list(n3)
print ""
final_result=add_numbers(n0,n3,0)
print_list(final_result)
class Node:
def __init__(self,initdata):
self.data=initdata
self.next=None
def getData(self):
return self.data
def setData(self,item):
self.data=item
def getNext(self):
return self.next
def setNext(self,item):
self.next=item
def add_numbers(n1,n2,carry):
if n1 is None:
return None
while n1.getData() is not None:
res_num=n1.getData() + n2.getData() + carry
if res_num>10:
carry=res_num % 10
new_num=res_num - carry
result_node=Node(new_num)
elif res_num==10:
carry=1
new_num=0
result_node=Node(new_num)
else:
result_node=Node(res_num)
next_node=add_numbers(n1.getNext(), n2.getNext(),carry)
result_node.setNext(next_node)
return result_node
def print_list(result):
current=result
nxt = current.getNext()
print current.getData()
if(nxt is not None):
print_list(nxt)
n0=Node(3)
n1=Node(1)
n2=Node(5)
n0.setNext(n1)
n1.setNext(n2)
n3=Node(5)
n4=Node(9)
n5=Node(2)
n3.setNext(n4)
n4.setNext(n5)
print_list(n0)
print ""
print_list(n3)
print ""
final_result=add_numbers(n0,n3,0)
print_list(final_result)
No comments:
Post a Comment