看到 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());
}
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVdGdVZ5JkblZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TMzIDNzIDN1EDNwgDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
棧反轉:
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());
}
}