# 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
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)
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)
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)