java数据结构

有关于栈之间转移的问题
有2个栈 Stack<Number> A = 1,2,3,4
Stack<Number> B = 5,6,7,8
现在要将 A 中的 4转移到 B中去 然后把 3 POP出来
具体应该怎么操作?(最好有代码和解释)
转移后 A 为 1 2
B 为 5,6,7,8,4

对于栈,我给你总结下:
栈(stack):限定仅在表尾进行插入或删除操作的线。
表尾-栈顶(top),表头-栈底(bootom)
特点:先进后出(filo),或后进先出(lifo)。
至于你的问题实现代码如下(复制可以直接使用):
public static void main(String[] args) {
Stack<Number> a = new Stack<Number>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
Stack<Number> b = new Stack<Number>();
b.add(5);
b.add(6);
b.add(7);
b.add(8);
//上面是给栈a、b添加元素
//下面两个for循环可以分别遍历出栈a、b
for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}
System.out.println("--------------------");
for (int i = 0; i < b.size(); i++) {
System.out.println(b.get(i));
}
System.out.println("--------------------");
//将 A 中的 4转移到 B中去 然后把 3 POP出来
//第一步:先将A中的4抛出来(现在4是在栈顶,可以直接抛出,如果不在栈顶,则要另写方法)
/*这句可以取到元素“4”在栈中的位置,然后移除
* Number log= a.search(4);
System.out.println("CCC"+log);
a.remove(a.search(3));*/
a.pop();
//将元素4加载到B栈
b.push(4);
//第二步:把 3 POP出来
a.pop();
for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}
System.out.println("--------------------");
for (int i = 0; i < b.size(); i++) {
System.out.println(b.get(i));
}
System.out.println("--------------------");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-14
B.push(A.pop());
A.pop();

解释:
A.pop() 去掉A的最后一个,即4, 变成1,2,3。而且返回这个4
A.pop() 去掉3
B.push() 接受一个值,放在最后。
因为push接受的是A.pop()返回的4,所以,B就变成 5,6,7,8,4本回答被提问者和网友采纳
第2个回答  2010-10-14
贴出具体程序吧。
相似回答