parameters: (self, data)
docstring: inserts node at the end of doubly linked list
docstring_summary: inserts node at the end of doubly linked list
docstring_tokens: inserts node at the end of doubly linked list
function: def insert_tail(self, data):
          """ inserts node at the end of doubly linked list """
          if self.head is None:
              self.head = Node(data)
              return
  
          current = self.head
          new_node = Node(data)
          while current.next is not None:
              current = current.next
          current.next = new_node
          new_node.previous = current
function_tokens: def insert_tail ( self , data ) : if self . head is None : self . head = Node ( data ) return current = self . head new_node = Node ( data ) while current . next is not None : current = current . next current . next = new_node new_node . previous = current