def test_index_of(self): self.myList = LinkedList() node1 = Node(1) node2 = Node(2) node3 = Node(3) self.myList.head = node1 node1.next = node2 node2.next = node3 self.assertEqual(self.myList.index_of(1), 0) self.assertEqual(self.myList.index_of(2), 1) self.assertEqual(self.myList.index_of(3), 2) self.assertFalse(self.l1.index_of(1)) self.assertFalse(self.l2.index_of(1)) self.assertEqual(self.l3.index_of(1), 0)
def sumLists(list1Node, list2Node, carry=0): if not (list1Node or list2Node or carry > 0): return None sumNode = Node(carry) list1Next = None list2Next = None # Add the listNode only if necessary, this handles varying lengths if list1Node: sumNode.value += list1Node.value list1Next = list1Node.next if list2Node: sumNode.value += list2Node.value list2Next = list2Node.next carry = sumNode.value / 10 sumNode.value = sumNode.value % 10 # hands off carry and next nodes of both lists recursively nextSumNode = sumLists(list1Next, list2Next, carry) # After node is received, take current node and put in front sumNode.next = nextSumNode return sumNode
def recur_reverse(node: Node) -> Node: """Reverse a given linked list in-place. :param l: A singly linked list class object :type l: SinglyLinkedList """ if node is None or node.next is None: return node new_node = recur_reverse(node.next) node.next.next = node node.next = None return new_node