from _linked_list import Node, get_linked_list def count_no_of_elements(head): count = 0 while head: count += 1 head = head.next return count if __name__ == "__main__": head = get_linked_list(6) print "Count # of nodes: {0}".format(count_no_of_elements(head))
while(head): #print "head: {0}, mid:{1}".format(head, mid_ptr) # increment mid only for odd count value. # concept same as fast_pointer. if (count & 1): mid_ptr = mid_ptr.next count += 1 head = head.next return mid_ptr if __name__ == '__main__': #odd naive print "odd: middle element {0}".format(naive_middle_element_in_linked_list(get_linked_list(5))) # even naive print "even: middle element {0}".format(naive_middle_element_in_linked_list(get_linked_list(6))) #empty naive print "empty: middle element {0}".format(naive_middle_element_in_linked_list(None)) #odd print "odd: middle element {0}".format(middle_element_of_linked_list(get_linked_list(5))) # even print "even: middle element {0}".format(middle_element_of_linked_list(get_linked_list(6))) # empty print "empty: middle element {0}".format(middle_element_of_linked_list(None)) #odd print "odd: middle element {0}".format(middle_element_with_head_and_one_fast_pointer(get_linked_list(5))) # even