如下從開源中國拷過來的,開源中不打算用了,換一個博客。數組
最近暫時不工做,也有一些時間來學習,平時常常寫一些很無味,很雷同的代碼,感受整我的都很差了,這幾天正好能夠好好利用,溫習一下數據結構,對邏輯思惟的鍛鍊和往後工做仍是有一些幫助的。數據結構
今天先說一下數據結構中很簡單很常見的棧,棧的特色就是先進後出,其實就像大學食堂的餐盤,服務人員在放餐盤的時候會一個個摞起來,最早放的確定是摞完後最下面的,最後放的是摞完後最上面的那個,而去食堂的大學生想取餐盤確定也是從最上面的那個取,直到最後一個被取走。棧也是一個道理。鄙人懶,仍是不畫圖了。學習
閒話少說,仍是上代碼吧。測試
/**這裏用數組來模擬棧*/ public class MyStack { private long [] arr; private int top; //至關於棧頂 public MyStack(){ arr = new long[10]; top = -1; } public MyStack(int maxsize){ arr = new long[maxsize]; top = -1 ; } /** * 入棧 */ public void push(int value){ arr[++top] = value; } /** * 出棧 */ public long pop(){ return arr[top--]; } /** * 查看數據,返回最上面的數據 */ public long peek(){ if(!isEmpty()){ return arr[top]; }else return 0; } /** * 判斷是否爲空 */ public boolean isEmpty(){ return top == -1; } /** * 判斷是否滿了 */ public boolean isFull(){ return top == arr.length-1; } }
測試類code
package stack_queue; public class TestMyStack { public static void main(String[] args) { MyStack ms = new MyStack(4); ms.push(23); ms.push(12); ms.push(1); ms.push(90); // System.out.println(ms.isEmpty()); // System.out.println(ms.isFull()); // // System.out.println(ms.peek()); // System.out.println(ms.peek()); while(!ms.isEmpty()){ System.out.println(ms.pop() + ","); System.out.println(ms.peek()); } System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); } }
鑑於這個例子太簡單了,就很少作解釋了,下一篇介紹隊列隊列