对于这个简单的问题,我需要找到stack1的值,并按顺序查找(如果有的话)。当涉及到堆栈时,原则是LIFO(后进先出)或FILO(先进先出)。使用堆栈的原因是反转数据,并以相反的顺序显示它。
Stack<Integer> stack1 = new Stack<Integer>();
stack1.push (2);
stack1.push(5);
stack1.push (stack1.pop() - stack1.pop());
stack1.push(8);
上面的问题让我想到,如果我们使用这个原则,答案应该是这样的: 8,3,5,2 。
8是最后一个值是开始,然后下一个值是3,从5和2开始(“pop”是“head”处的删除)。然后接下来的两个值是5和2.这是正确的答案,还是我得到了错误的答案?
答案 0 :(得分:0)
Stack是一个LIFO(后进先出)。从您放入的第一个元素的角度来看它。您还应该检查what is the basic difference between stack and queue?。
对于这个例子,答案是8和3只是因为当你计算3为stack.pop() - stack.pop()
时你从堆栈中删除了5和2,所以它们不再存在了。
答案 1 :(得分:0)
Stack stack1 = new Stack(); []
stack1.push(2); [2]
stack1.push(5); [2,5]
stack1.push(stack1.pop()[2] - stack1.pop()[]); [3]
stack1.push(8); [3,8]