【发布时间】:2014-06-11 18:37:50
【问题描述】:
我想在不将其放入 Java IDE 的情况下解决此问题。 (如果在考试中出现,我将无法解决。)
所以到目前为止我所知道的。
我知道堆栈被称为 LIFO 队列称为FIFO。但我不明白这段代码会弹出什么(或者如果我是对的)。
public static void main (String[] args) {
Queue<String> q = new Queue<String> ();
q.enqueue ("one");
q.enqueue ("two");
q.enqueue ("four");
q.enqueue ("six");
String s = "";
int i = 0;
while (!q.isEmpty()) {
s = s + q.dequeue().substring(i);
i++;
}
StdOut.print (s);
}
因为它是一个队列,所以它是 FIFO 并且子字符串将导致输出为: onewour?由于 s.substring() 表示 6 为 (3),所以不会出现任何值。
最后我在普林斯顿CS课上发现了两个问题,但不知道答案是怎么来的
假设客户端执行(队列)入队和出队操作的混合序列。入队操作将整数 0 到 9 按顺序放入队列中;出队操作打印出返回值。以下哪个序列不能发生?
(a) 0 1 2 3 4 5 6 7 8 9
(b) 4 6 8 7 5 3 2 9 0 1
(c) 2 5 6 7 4 8 9 3 1 0
(d) 4 3 2 1 0 5 6 7 8 9
答案:(b)、(c) 和 (d)。
假设执行(堆栈)推入和弹出操作的混合序列。 push 按顺序推动整数 0 到 9; pops 打印出返回值。以下哪个序列不能发生?
(a) 4 3 2 1 0 9 8 7 6 5
(b) 4 6 8 7 5 3 2 9 0 1
(c) 2 5 6 7 4 8 9 3 1 0
(d) 4 3 2 1 0 5 6 7 8 9
(e) 1 2 3 4 5 6 9 8 7 0
(f) 0 4 6 5 3 8 1 7 2 9
(g) 1 4 7 9 8 6 5 3 0 2
(h) 2 1 4 3 6 5 8 7 9 0
答案:(b)、(f) 和 (g)。
【问题讨论】: