def palindrome(listHead): n = listHead reversedList = None while n!= None: reversedList = linkedListNode.addToHead(reversedList, linkedListNode(n.data)) n = n.next # now compare both lists while listHead!= None: if listHead.data != reversedList.data: return False listHead = listHead.next reversedList = reversedList.next return True
def sumLists(num1, num2): n1 = num1 n2 = num2 ans = None carry = 0 sum = 0 while n1 != None or n2 != None or carry != 0: n1d = 0 if n1 == None else n1.data n2d = 0 if n2 == None else n2.data sum = n1d + n2d + carry temp = linkedListNode(sum % 10, None) ans = linkedListNode.addToTail(ans, temp) carry = (sum - temp.data) / 10 n1 = None if n1 == None else n1.next n2 = None if n2 == None else n2.next return ans
"Given a linked list, delete a node which is neith head nor tail." from LinkedListNode import linkedListNode def deleteFromBetween(listHead): if listHead == None or listHead.next == None or listHead.next.next == None: return False listHead.next = listHead.next.next return True a = linkedListNode(1) b = linkedListNode(2, a) c = linkedListNode(3, b) d = linkedListNode(4, c) e = linkedListNode(5, d) f = linkedListNode(6, e) f.displayFromHere() print "\n\t-:AFTER DELETION:-\n" assert deleteFromBetween(f) f.displayFromHere()
from LinkedListNode import linkedListNode def palindrome(listHead): n = listHead reversedList = None while n!= None: reversedList = linkedListNode.addToHead(reversedList, linkedListNode(n.data)) n = n.next # now compare both lists while listHead!= None: if listHead.data != reversedList.data: return False listHead = listHead.next reversedList = reversedList.next return True a = linkedListNode(1) b = linkedListNode(2,a) c = linkedListNode(3,b) d = linkedListNode(3,c) e = linkedListNode(2,d) f = linkedListNode(1,e) print palindrome(f)
return ans def sumListsReversed(num1, num2): n1 = num1 n2 = num2 ans = None carry = 0 sum = 0 while n1 != None or n2 != None or carry != 0: n1d = 0 if n1 == None else n1.data n2d = 0 if n2 == None else n2.data sum = n1d + n2d + carry temp = linkedListNode(sum % 10, None) ans = linkedListNode.addToTail(ans, temp) carry = (sum - temp.data) / 10 n1 = None if n1 == None else n1.next n2 = None if n2 == None else n2.next return ans num1 = linkedListNode.addToTail( None, linkedListNode(7, linkedListNode(1, linkedListNode(6, None)))) num2 = linkedListNode.addToTail( None, linkedListNode(5, linkedListNode(9, linkedListNode(2, None)))) ans = sumLists(num1, num2) ans.displayFromHere()