//ss.java --CopyLeft by tsaiwn@csie.nctu.edu.tw //modified from stk.c and stkmain.c //see http://www.csie.nctu.edu.tw/~tsaiwn/introcs/OTHERS/stack/ // 堆疊(Stack) 與 佇列(Queue; 排隊)是資料結構中很重要也很簡單的兩個 // 線性資料結構! //以下是直接把 C 版本的 stk.c 與 stkmain.c "硬" 改成 Java program // 真的是把 Java 當作 C 在用! (不是好方法!) // Java 的程式庫中已經有一個 Stack 可用, // 不過須注意只能推入物件 (Object), // 當然你也該知道在 Java 中推入物件其實是推入其"參考"(reference), // 而 Java 的 "參考"(reference)其實是 C++ 的指標(pointer) import java.io.*; class ss { public final int NELEMENT = 99; int data[ ] = new int[NELEMENT]; int stkptr = -1; // stack is empty public static void main(String xx[ ]) { new ss( ); } ss( ) { push(880); push(770); push(53); while(!empty()){ printf(" " + top( ) ); pop(); } printf("\n"); } void push(int x) { stkptr++; data[stkptr] = x; } int top( ) { return data[stkptr]; } void pop( ) { if(stkptr> -1) --stkptr; } boolean empty( ){ return (stkptr <= -1) ;} boolean isfull( ){ return (stkptr >= NELEMENT-1);} void printf(String s) { cout.print(s); } PrintStream cout = System.out; } // class /*************** ccbsd2:stack0/> javac ss.java ccbsd2:stack0/> java ss 53 770 880 ccbsd2:stack0/> ****************/