看到 http://bbs.csdn.net/topics/390843046 这里的关于一个栈的问题:
stack的存储方式是:属于线性类型,则存储方式遵循:先进后出,后进先出;
看以下代码及结果:
public static void main(String[] args) {
Stack s = new Stack();
s.add("apple");
s.add("banana");
s.add("org");
s.add("cat");
while(s.size()>0){
System.out.println(s.pop());
}
}
栈反转:
public static void reverseStack(Stack s){
Queue r = new LinkedList();
//r.offer() 是将指定队列插到r中
//s.pop是 移除堆栈顶部的对象,并作为此函数的值返回该对象。
while(s.size()>0) r.offer(s.pop());
//s.push() 把项压入堆栈顶部。
//r.poll() 获取并移除此队列的头,如果此队列为空,则返回 null。
while(r.size()>0) s.push(r.poll());
}
实现的效果:
public static void main(String[] args) {
//反转一个栈
Stack s = new Stack();
s.add("apple");
s.add("banana");
s.add("org");
s.add("cat");
// while(s.size()>0){
// System.out.println(s.pop());
// }
reverseStack(s);
while(s.size()>0){
System.out.println(s.pop());
}
}