Ejemplo n.º 1
0
# print_linked_list_contents(reverse_in_pairs)


def search_in_linked_list(start, element):
    if(not start):
        return
    temp = start
    while(temp):
        if temp.contents == element:
            return True
        temp = temp.next
    return False

# array=[55, 67,34, 56, 23, 100, 110, 2]
# header = generate_linked_list_with_values(array)
# print "Searching for: {0} and the result is:{1}".format(34, search_in_linked_list(header, 34))
# print "Searching for: {0} and the result is:{1}".format(43, search_in_linked_list(header, 43))
# print "Searching for: {0} and the result is:{1}".format(43, search_in_linked_list(None, 43))


def fun(p):
    return(
        (p == None) or
        (p.next == None) or
        (p.contents <= p.next.contents and fun(p.next))
    )

head = generate_linked_list(5)
print fun(head)
print fun(None)
def helper_generate_cycle_list():
    head_cycle = generate_linked_list(5)
    head_cycle.next.next.next.next.next = head_cycle.next.next
    return head_cycle
Ejemplo n.º 3
0
    next_ptr = curr_ptr.next
    #while curr_ptr and next_ptr:
    #while next_ptr.next: wrong
    #while next_ptr:
    while curr_ptr:
        #print " prev_ptr : {0}, curr_ptr: {1}, next_ptr: {2}".format(prev_ptr, curr_ptr, next_ptr)
        next_ptr = curr_ptr.next
        curr_ptr.next = prev_ptr
        prev_ptr = curr_ptr
        curr_ptr = next_ptr

    return prev_ptr


def reverse_linked_list_recursively(head):
    print "yet to be implemented."
    pass


if __name__ == "__main__":
    head =  generate_linked_list(6)
    print "Orginal list"
    print_linked_list_contents(head)
    print "\nReversed list"
    print_linked_list_contents(reverse_linked_list(head))

    empty_head = generate_linked_list(0)
    print_linked_list_contents(reverse_linked_list(empty_head))

    #reverse_linked_list_recursively(head)
Ejemplo n.º 4
0
from _helper_generators import generate_linked_list
from _helper_printers import print_linked_list_contents

def cycle_or_not(node):
    slow_p = node
    fast_p = node
    while(slow_p != None and fast_p != None and fast_p.next != None):
        slow_p = slow_p.next
        fast_p = fast_p.next.next
        print "slow_p : ", slow_p, "fast_p : ",fast_p#, fast_p.next.next
        if (slow_p == fast_p):
            print "cycle found"
            return True
    print "No cycle found"
    return False



head_cycle = generate_linked_list(5)
head_cycle.next.next.next.next.next = head_cycle.next.next
cycle_or_not(head_cycle)

head = generate_linked_list(5)
cycle_or_not(head)
Ejemplo n.º 5
0
        return False

    # Actually this is not needed.
    if count_no_of_elements(head1) != count_no_of_elements(head2):
        print "Number of nodes do not match!!!"
        return False

    while head1 and head2:
        if head1.contents != head2.contents:
            print "They do not look the same. Sorry"
            return False
        head1 = head1.next
        head2 = head2.next
    print "Both are the same."
    return True

if __name__ == "__main__":
    head1 = generate_linked_list(4)
    head2 = generate_linked_list(4)
    check_if_both_linked_list_are_same(head1, head2)

    len_4 = generate_linked_list(4)
    len_5 = generate_linked_list(5)
    check_if_both_linked_list_are_same(len_4, len_5)

    check_if_both_linked_list_are_same(None, None)

    lista = generate_linked_list(4, start=2)
    listb = generate_linked_list(4, start=3)
    check_if_both_linked_list_are_same(lista, listb)