我的测试中有一些问题。现在在与朋友讨论之后,答案是不同的,我们无法为我们的答案做出决定。你们中的任何一个程序员都可以解决它并分享答案吗?谢谢大家!
这就是问题:
显示以下代码段写的内容,假设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);
答案 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)部分。
我强烈建议您编写代码并运行它。 (您可以使用调试器来更好地了解正在发生的事情)