队列和循环小问题

时间:2013-04-06 11:43:43

标签: java loops queue

我的测试中有一些问题。现在在与朋友讨论之后,答案是不同的,我们无法为我们的答案做出决定。你们中的任何一个程序员都可以解决它并分享答案吗?谢谢大家!

这就是问题:

显示以下代码段写的内容,假设element1,element2和element3是int变量,而queue是符合5.2节中给出的队列抽象描述的对象,假设您可以存储和检索int类型和队列中的值。

A)

element1 = 1;
element2 = 0;
element3 = 4;
qeueu.enqueue(element2);
qeueu.enqueue(element1);
qeueu.enqueue(element1+element2);
element2 = queue.dequeu();
queue.enqueue(element3*element3);
queue.enqueue(element2);
queue.enqueue(3);
element1 = queue.dequeue();
system.out.println(element1 + " " + element2 + " " + element3);
while(!qeueu.isEmpty())
{
element1 = queue.dequeue();
system.out.println(element1);
}

b)中

element1 = 4;
element2 = 0;
element3 = element1 + 1;
qeueu.enqueue(element2);
qeueu.enqueue(element2 + 1);
qeueu.enqueue(element1);
element2 = queue.dequeu();
element1 = element2 + 1;
queue.enqueue(element1);
queue.enqueue(element3);
while(!qeueu.isEmpty())
{
element1 = queue.dequeue();
system.out.println(element1);
}
system.out.println(element1 + " " + element2 + " " + element3);

1 个答案:

答案 0 :(得分:0)

队列为FIFO:先入先出。

想象一下,队列看起来像这样:

------------------------------------
------>                               
____________________________________
 ^                                 ^
 |                                 |
enquee                          dequeue

所以在做的时候:

qeueu.enqueue(element2);
qeueu.enqueue(element1);
qeueu.enqueue(element1+element2);

队列将如下所示:

------------------------------------
---->  1    1    0  ---->                              
____________________________________

当你这样做时:

element2 = queue.dequeu();

然后element2现在保持0,并从队列中删除0。

现在你做:

queue.enqueue(element3*element3);
queue.enqueue(element2);
queue.enqueue(3);

这将在队列中插入4 * 4,即16:

  ------------------------------------
   ---->  3   0   16   1    1   ---->          0 (0 was removed)                          
  ____________________________________

现在你有:

element1 = queue.dequeue();

element1将为1,并且将从队列中删除1。

从这里开始,您可以轻松完成代码,以及(b)部分。

我强烈建议您编写代码并运行它。 (您可以使用调试器来更好地了解正在发生的事情)