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
예제 #3
0
파일: play.py 프로젝트: maneeshd/algo-ds
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