//ts.java 自己做 Stack --- by tsaiwn@csie.nctu.edu.tw import java.util.*; class MyStack { private Object x[ ]; private int sp; private final int sz = 99; // 不夠就改大一點 /////////////////// 原則: Data 藏起來, functions 公開 public MyStack( ) { sp = -1; x = new Object[sz]; } // public void push(Object o) { x[++sp] = o; } public Object peek( ) { return x[sp]; } // C++ 叫做 top( ) public Object pop( ) { return x[sp--]; } public boolean empty( ) { return sp < 0; } public boolean full( ) { return sp >= sz-1; } } // MyStack // Note that the Stack in Library is made of Vector class ts { static double x[ ] = {1,2,3,4,5,8}; public static void testaa( ) { MyStack ss = new MyStack( ); for(double y:x) { System.out.println(y); ss.push(y); // JDK 1.5 後會 autoBoxing } // for System.out.println("=== now check stack ..."); while( !ss.empty( ) ) { System.out.print(""+ ss.pop( ) + " "); } System.out.println(); } ////// use Library Stack // 注意 testaa( ) 與 testbb( ) 完全相同! public static void testbb( ) { Stack ss = new Stack( ); // 除了這裡用程式庫的 Stack for(double y:x) { System.out.println(y); ss.push(y); // JDK1.4.x 以前不可以! } // for System.out.println("=== now check stack ..."); while( !ss.empty( ) ) { System.out.print(""+ ss.pop( ) + " "); } System.out.println(); } public static void main( String xx[]) { testaa( ); System.out.println("===Now using Library Stack..."); testbb( ); } // main } // class yy /******************** C:\Jtest>javap java.util.Stack Compiled from "Stack.java" public class java.util.Stack extends java.util.Vector{ public java.util.Stack(); public java.lang.Object push(java.lang.Object); public synchronized java.lang.Object pop(); public synchronized java.lang.Object peek(); public boolean empty(); public synchronized int search(java.lang.Object); } ***************************************/////////////// /*** C:\Jtest>javac ss.java Note: ss.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. C:\Jtest>java ss 1.0 2.0 3.0 4.0 5.0 8.0 === now check stack ... 8.0 5.0 4.0 3.0 2.0 1.0 ===Now using Library Stack... 1.0 2.0 3.0 4.0 5.0 8.0 === now check stack ... 8.0 5.0 4.0 3.0 2.0 1.0 C:\Jtest> ***======================================***/