用列表表示比较容易,因为栈是从同一端插入和检出。而表示队列要困难些,因为队列的插入和检出是在不同端。为了有效的实现队列,我们需要找到一种办法来指向列表的两个端。

    图 12.6 给出了一种可行的策略。它展示怎样表示一个含有 a,b,c 三个元素的队列。一个队列就是一对列表,最后那个 在相同的列表中。这个列表对由被称作头端 (front)和尾端 (back)的两部分组成。如果要从队列中检出一个元素,只需在其头端 pop,要插入一个元素,则创建一个新的 ,把尾端的 cdr 设置成指向这个 ,然后将尾端指向这个新的 cons

    图 12.6 一个队列的结构

    图 12.7 队列实现

    现在, 的结构就如图 12.6 那样:

    从队列中检出一些元素: