0

我在测试中遇到了一些问题。现在在与朋友讨论之后,答案不同了,我们离做出答案的决定还差得很远。你们中的任何一个程序员都可以解决它并分享答案吗?谢谢大家!

这是问题:

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

一种)

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);
4

1 回答 1

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) 部分。

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

于 2013-04-06T11:55:38.157 回答