from node import Node

class LinkedList:
    
    def __init__(self):
        self.__head = None
        self.__tail = None
        
    def isEmpty(self):
        return self.__head is None
        
    def append(self, value):
        if self.isEmpty():
            self.__head = Node(value)
            self.__tail = self.__head
        else:
            self.__tail.setNext(Node(value))
            self.__tail = self.__tail.getNext()
    
    def __str__(self):
        #return str(self.__head)
        myStr = ''
        current = self.__head
        while current is not None:
            myStr += str(current.getData()) + " --> "
            current = current.getNext()
        myStr += '🛑'
        return myStr
    
    def __len__(self):
        if self.isEmpty():
            return 0
        else:
            count = 1
            # Traverse
            here = self.__head
            while here.getNext() is not None:
                here = here.getNext()
                count += 1
            return count
            
if __name__ == "__main__":
    myList = LinkedList()
    print(myList.isEmpty())
    print(len(myList))
    myList.append("A")
    print(len(myList))
    myList.append("B")
    myList.append("C")
    print(myList.isEmpty())
    print(myList)