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
def reverse_double_linked_list(head):
    temp = _double_linked_list_Node()
    curr = head

    while(curr != None):
        temp = curr.prev
        curr.prev = curr.next
        curr.next = temp
        curr = curr.prev
    if temp != None:
        head = temp.prev

    return head