In the Queues chapter, one of the implementations used a doubly linked list. I curious why you chose a doubly linked list rather than the plain linked list that we studied in the previous chapter? It seems like a singly linked list would have less overhead and would still be O(1) if you enqueue using append and dequeue with a pop. Or was it to introduce readers to the concept of a doubly linked list?
I have same question and would like to understand the necessity to use doubly linked list instead of singly linked list for queue.