A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 1: Pg 244 pop_head method

pop_head method needs check before attempting to assign

self.first_node.previous_node = None

This is needed if Queue has only one element. The initial self.first_node = self.first_node.next_node is None

Example fix:


    def pop_head(self):
        if not self.first_node:
            return None

        popped_node = self.first_node
        self.first_node = self.first_node.next_node
        if self.first_node:
            self.first_node.previous_node = None
        return popped_node