如果C是一个堆栈,我试图弄清楚System.out.println(str);
的输出是什么。
我相信System.out.println(str);
命令会输出Harry
,但我想确认,因为我不完全理解.remove()
命令。当我将这个伪代码转换为Java时,它不会识别.remove()
命令,除非我通过它传递一个整数,例如.remove(2)
。因此,在这种情况下,我不确定.remove()
是否是无效命令,或者它是否是适合堆栈的方法。我的研究似乎表明,没有.remove()方法适用于堆栈。
所以我的问题是,如果C是一个堆栈,那么System.out.println(str);
的输出是什么?
public interface Container<T>
{
void insert(T x); // insert x into Container
T remove(); // remove item from Container
}
public class C<T> implements Container<T>
{
public C() { /* constructor */ }
public void insert(T x) { /* insert x into C */ }
public T remove() { /* remove item from C */ }
//.. other methods
}
Here is a program segment that uses class C above:
Container<String> words = new C<String>();
String w1 = "Tom";
String w2 = "Dick";
String w3 = "Harry";
String w4 = "Moe";
words.insert(w1);
words.insert(w2);
words.insert(w3);
words.insert(w4);
String str = words.remove(); // remove
str = words.remove(); // remove again
System.out.println(str);
答案 0 :(得分:1)
如果C
是常规堆栈(并且编码正确),则它是一个LIFO(后进先出)容器。
这意味着事情会以你把它们放入的相反顺序出现。
所以第一个remove
会给你Moe
,第二个会给你Harry
。
详细说明:
operation stack (top,...,bottom) str
--------- ---------------------- ---
initial state <empty>
push tom tom
push dick dick, tom
push harry harry, dick, tom
push moe moe, harry, dick, tom
pop str harry, dick, tom moe
pop str dick, tom harry