理解这个队列和堆栈代码
Understanding this queue and stack code
以下代码涉及队列和栈。它有什么作用以及如何做?
public static void theCode (Queue q)
{
ListStack s = new ListStack();
while(! q.isEmpty())
s.push(q.dequeue());
while(! s.isEmpty())
q.enqueue(s.pop());
我在 API 中找不到此 ListStack class。但是,此方法看起来像是在尝试遍历给定的 Queue(参数中指定的 q)并将内容复制到 ListStack s.
将鼠标放在队列和堆栈标签上,然后阅读弹出式广告。从堆栈的同一端添加和删除项目,但(通常)从队列的另一端添加和删除项目。这是一个 3 元素队列的步骤示例,一次移动一个项目。
Q: [1,2,3]; S: []
Q: [2,3]; S: [1]
Q: [3]; S: [1,2]
Q: []; S: [1,2,3]
Q: [3]; S: [1,2]
Q: [3,2]; S: [1]
Q: [3,2,1]; S: []
队列颠倒了。这个过程在任何具有队列和堆栈的语言中都是相同的类。
以下代码涉及队列和栈。它有什么作用以及如何做?
public static void theCode (Queue q)
{
ListStack s = new ListStack();
while(! q.isEmpty())
s.push(q.dequeue());
while(! s.isEmpty())
q.enqueue(s.pop());
我在 API 中找不到此 ListStack class。但是,此方法看起来像是在尝试遍历给定的 Queue(参数中指定的 q)并将内容复制到 ListStack s.
将鼠标放在队列和堆栈标签上,然后阅读弹出式广告。从堆栈的同一端添加和删除项目,但(通常)从队列的另一端添加和删除项目。这是一个 3 元素队列的步骤示例,一次移动一个项目。
Q: [1,2,3]; S: []
Q: [2,3]; S: [1]
Q: [3]; S: [1,2]
Q: []; S: [1,2,3]
Q: [3]; S: [1,2]
Q: [3,2]; S: [1]
Q: [3,2,1]; S: []
队列颠倒了。这个过程在任何具有队列和堆栈的语言中都是相同的类。