def method_2_using_stack(head): if not head: print "empty linked list" return print "\n# convert linked list to stack" stack = convert_linked_list_to_stack(head) print_stack_contents(stack) while head: if stack.pop() != head.contents: print "Not a palindrome" return head = head.next print "Yes palindrome"
def test_convert_linked_list_to_stack(): head1 = convert_array_to_linked_list(['f', 'g', 'e', 'g', 'f']) # convert linked list to stack stack = convert_linked_list_to_stack(head1) print_stack_contents(stack)
def generate_linked_list_with_values(array): head = Node() temp_node = head for element in array: node = Node(element) temp_node.next = node temp_node = temp_node.next head = head.next return head def generate_double_linked_list(length, start=1): head = _double_linked_list_Node() temp_node = head prev_node = _double_linked_list_Node() for i in xrange(start, length+start): node = _double_linked_list_Node(i) temp_node.next = node prev_node = temp_node temp_node = temp_node.next temp_node.prev = prev_node head = head.next #print__double_linked_list_contents(head) return head if __name__ == "__main__": print_stack_contents(generate_empty_stack()) print_stack_contents(generate_stack(6)) print_linked_list_contents(generate_linked_list(4))