def test_and_print(array1, array2):
	head1 = generate_linked_list_with_values(array1)
	head2 = generate_linked_list_with_values(array2)
	print "\n--------------"
	print "linked list 1"
	print_linked_list_contents(head1)
	print "\nlinked list 2"
	#print "--------------"
	print_linked_list_contents(head2)
	head1= linked_list_merge_inplace(head1, head2)
	print "\nOutput of merging linked list 1 and 2:"
	print_linked_list_contents(head1)
def test_and_print(array):
	head1 = generate_linked_list_with_values(array)
	print "\n--------------"
	print "linked list before sorting"
	print_linked_list_contents(head1)
	head1 = sort_linked_list_efficiently(head1)
	print "\nlinked list after sorting"
	print_linked_list_contents(head1)
Пример #3
0
def test_and_print(array):
	head1 = generate_linked_list_with_values(array)
	print "\n--------------"
	print "linked list before even_and_odd"
	print_linked_list_contents(head1)
	head1 = linked_list_even_and_odd(head1)
	print "\nlinked list after even_and_odd"
	print_linked_list_contents(head1)
Пример #4
0
def first_last_ordering_with_stack(head, reversed_head, middle):
    if not _check_parameters(head, reversed_head, middle):
        return
    t_head = head
    t_reversed_head = reversed_head
    count = 1
    lista = []
    while t_head != middle:
        if count%2:
            lista.append(t_head.contents)
            t_head =  t_head.next
        else:
            lista.append(t_reversed_head.contents)
            t_reversed_head = t_reversed_head.next
        count = count + 1
    lista.append(t_head.contents)
    new_head = generate_linked_list_with_values(lista)
    return new_head
def test_case_four():
	lista = generate_linked_list_with_values(['e', 'e', 'e', 'k', 's', 'a'])
	listb = generate_linked_list_with_values(['g', 'e', 'e', 'k', 's'])
	return lista, listb
def union(start1, start2):
    # union of two linked_list
    pass


def intersection(start1, start2):
    # intersection of two linked_list
    pass


def membership():
    # Subsets and Powersets
    pass


def cardinality(start):
    # For example, the set A = {2, 4, 6} contains 3 elements,
    # and therefore A has a cardinality of 3
    pass


# [10, 15, 4, 20]
list1 = generate_linked_list_with_values([4, 10, 15, 20])
# [8, 4, 2, 10]
list2 = generate_linked_list_with_values([2, 4, 8, 10])
print "list1: "
print_linked_list_contents(list1)
print "\nlist2: "
print_linked_list_contents(list2)
Пример #7
0
	len2 = count_no_of_elements(node2)
	print "len1 :", len1
	print "len2 :", len2

	# move the pointers
	diff = abs(len1 - len2)
	if (len1>len2):
		i = 0
		while (i<diff):
			node1 = node1.next
			i += 1
	else:
		i = 0
		while (i<diff):
			node2 = node2.next
			i += 1

	while (node1 != None and node2 != None):
		print "node1: {0}, node2:{1}".format(node1.contents, node2.contents)
		if node1.contents == node2.contents:
			return node1
		node1 = node1.next
		node2 = node2.next

	return None

if __name__ == "__main__":
	node1 = generate_linked_list_with_values([1, 2, 4, 3])
	node2 = generate_linked_list_with_values([10, 6, 1, 4, 3]) 
	print intersection_of_two_linked_list(node1, node2)
Пример #8
0
			return None
		left = self.convert_to_BST_n(nu/2, head)
		node = Tree(head.contents)
		head = head.next
		node.left = left
		right = self.convert_to_BST_n(nu-nu/2-1, head)
		node.right = right
		return node


if __name__ == '__main__':
	array = [5,6,7,8,9,10,20]
	ll_bst = linked_list_to_bst(array)
	#ll_bst.to_bst()
	# root = Tree(None)
	# root = ll_bst.convert_to_bst(0, 6)
	# root.print_node()
	# print root.left.data

	# now calling
	head = generate_linked_list_with_values(array)
	print_linked_list_contents(head)
	root = ll_bst.convert_to_BST_n(len(array)-1, head)
	tree_traveral = TreeTraversal()
	print "inorder : "
	tree_traveral.inorder(root)
	print "preorder : "
	tree_traveral.preorder(root)
	print "postorder : "
	tree_traveral.postorder(root)
        result = result + head.contents * (pow(2, i))
        head = head.next
    return result


def decimal_equivalent(head):
    result = 0
    while head != None:
        result = (result << 1) + head.contents
        head = head.next
    return result


if __name__ == "__main__":
    array1 = [0, 0, 0, 1, 1, 0, 0, 1, 0]
    header1 = generate_linked_list_with_values(array1)
    print "print_linked_list_contents: "
    print_linked_list_contents(header1)
    print "count_no_of_elements : {0}".format(count_no_of_elements(header1))
    print "decimal_equivalent_based_on_length : {0}".format(
        decimal_equivalent_based_on_length(header1, count_no_of_elements(header1))
    )
    print "decimal_equivalent : {0}".format(decimal_equivalent(header1))

    array2 = [1, 0, 0]
    header2 = generate_linked_list_with_values(array2)
    print "print_linked_list_contents: "
    print_linked_list_contents(header2)
    print "count_no_of_elements : {0}".format(count_no_of_elements(header2))
    print "decimal_equivalent_based_on_length : {0}".format(
        decimal_equivalent_based_on_length(header2, count_no_of_elements(header2))
    return number1, number2

def insert_in_front(head, diff):
    # insert extra nodes of zero in the front
    if head == None:
        return
    for i in range(diff):
        temp = Node(0)
        temp.next = head
        head = temp
    return head


if __name__ == "__main__":
    # same size
    number1 = generate_linked_list_with_values([2, 4, 3])
    number2 = generate_linked_list_with_values([5, 6, 4])
    added_sum = add_two_numbers(number1, number2)
    print_linked_list_contents(added_sum)

    #different size
    diff_size_number1 = generate_linked_list_with_values([1, 2, 4, 3])
    diff_size_number2 = generate_linked_list_with_values([6, 1, 4])
    diff_size_added_sum = add_two_numbers(diff_size_number1, diff_size_number2)
    print_linked_list_contents(diff_size_added_sum)


    # test insert_in_front
    # number1 = generate_linked_list_with_values([2, 4, 3])
    # head = insert_in_front(number1, 1)