Exercise 13.13
make-queue:
- Make a two-element vector and use set-start!
and set-tail! to set the start and tail to empty
- Use an empty list to signify empty
empty-queue?:
- Use null? to test start or tail for emptiness.
head:
- Check for emptiness
- Return the item (not the node containing the item) at the start
enqueue!:
- Use mcons to create a new node for the new item
- What will the mcdr of the new node have to be?
- Set the tail of the queue to the new node, but be sure to save the old
tail first
- Make the new node be the tail of the queue
- Make the new node follow the old tail (but what if we are adding to an
empty queue?)
dequeue!:
- Check for emptiness
- Make the new start of the queue be whatever followed the old start of
the queue