//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/>
****************/
