def sum_list1(h1, h2):
    acc = 0
    res = None
    c1, c2 = h1, h2
    while c1 != None or c2 != None:
        if c1 != None:
            v1 = c1.data
            c1 = c1.next
        else:
            v1 = 0
        if c2 != None:
            v2 = c2.data
            c2 = c2.next
        else:
            v2 = 0
        val = v1 + v2 + acc
        tmp = val % 10
        acc = val / 10
        if res:
            res.append(tmp)
        else:
            res = Node(tmp)
    if acc != 0:
        res.append(acc)
    return res
 def test_for_multiple_nodes(self):
     node2 = Node(2)
     node1 = Node(1, node2)
     self.assertIsNone(node2.next())
     node1.append(3)
     self.assertIsNotNone(node2.next(), None)
     self.assertEqual(node2.next().value(), 3)
Ejemplo n.º 3
0
def create_linked_lists(root: TreeNode):
    result = []
    current_linked_list = Node(root)

    while current_linked_list:
        result.append(current_linked_list)
        n = current_linked_list
        next_linked_list: Node = None

        while n:
            if n.data.left:
                if next_linked_list:
                    next_linked_list.append(n.data.left)
                else:
                    next_linked_list = Node(n.data.left)
            if n.data.right:
                if next_linked_list:
                    next_linked_list.append(n.data.right)
                else:
                    next_linked_list = Node(n.data.right)
            n = n.tail

        current_linked_list = next_linked_list

    return result
Ejemplo n.º 4
0
                    runner._next._pre = runner
            else:
                runner = runner._next
        l = l._next
    return True


def remove_dups_2(l):
    assert l != None, 'Empty list'
    appeared = [l._item]
    while l._next != None:
        if l._next._item in appeared:
            l._next = l._next._next
            if l._next != None:
                l._next._pre = l
        else:
            appeared.append(l._next._item)
            l = l._next
    return True


if __name__ == '__main__':
    l = Node(np.random.randint(1, 10))
    for i in range(np.random.randint(5, 10)):
        l.append(np.random.randint(1, 10))
    print('Before removal')
    display(l)
    remove_dups_2(l)
    print('After:')
    display(l)
Ejemplo n.º 5
0
 def test_linked_list_append(self):
     linked_list = Node(1, Node(2, Node(3, Node(4))))
     another_linked_list = Node(1, Node(2, Node(3)))
     another_linked_list.append(4)
     self.assertEqual(linked_list, another_linked_list)
Ejemplo n.º 6
0
        else:
            seen.add(node.data)
            prev = node

        node = node.next


def delete_dupes2(node):
    '''Without a buffer, using a leading node instead'''
    while node.next is not None:
        runner = node
        while runner.next is not None:
            if runner.next.data == node.data:
                runner.next = runner.next.next
            else:
                runner = runner.next
        node = node.next


arr = [3, 2, 2, 2, 3, 1, 3, 1, 2, 3]
head = Node(1)

for n in arr:
    head.append(n)

print_nodes(head)

delete_dupes(head)

print_nodes(head)
Ejemplo n.º 7
0
from linked_list import Node

a = Node(10)
a.append(20)
a.append(55)
print(a)
Ejemplo n.º 8
0
		
def getLastNode(l):
	assert l._item != None, 'Empty list'
	while True:
		l = l._next
		if l._next == None:
			break
	return l

if __name__ == '__main__':
	l = Node()
	n = np.random.randint(1,10)
	print('N: %d' %n)
	if np.random.randint(0,2) > 0:
		if (n % 2) == 0:
			for i in range(n//2):
				l.append(i)
			for i in range(n//2):
				l.append(n//2 - i -1)
		else:
			for i in range((n//2) + 1):
				l.append(i)
			for i in range(n//2):
				l.append(n//2 - i -1)
	else:
		for i in range(n):
			l.append(np.random.randint(0,10))
	display(l)
	result = check_palindrome(l)
	print(result)
	
 def test_for_single_node(self):
     node = Node(1)
     self.assertIsNone(node.next())
     node.append(2)
     self.assertIsNotNone(node.next(), None)
     self.assertEqual(node.next().value(), 2)