text: from structures.node import Node
  
  
  class OrderedList:
      def __init__(self):
          self.head = None
  
      def __iter__(self):
          node = self.head
          while node is not None:
              yield node
              node = node.get_next()
  
      def is_empty(self):
          return self.head is None
  
      def add(self, item):
          current = self.head
          previous = None
          stop = False
          while current is not None and not stop:
              if current.get_data() > item:
                  stop = True
              else:
                  previous = current
                  current = current.get_next()
  
          temp = Node(item)
          if previous is None:
              temp.set_next(self.head)
              self.head = temp
          else:
              temp.set_next(current)
              previous.set_next(temp)
  
      def size(self):
          current = self.head
          count = 0
          while current is not None:
              count = count + 1
              current = current.get_next()
  
          return count
  
      def search(self, item):
          current = self.head
          found = False
          stop = False
          while current is not None and not found and not stop:
              if current.get_data() == item:
                  found = True
              else:
                  if current.get_data() > item:
                      stop = True
                  else:
                      current = current.get_next()
  
          return found
  
      def remove(self, item):
          current = self.head
          previous = None
          found = False
          while not found:
              if current.get_data() == item:
                  found = True
              else:
                  previous = current
                  current = current.get_next()
  
          if previous is None:
              self.head = current.get_next()
          else:
              previous.set_next(current.get_next())
  