關於棧
棧(Stack)是限定只能在一段進行插入和刪除操作的線性表。
進行插入和刪除操作的一端稱為“棧頂”(top),另一端稱為“棧底”(bottom)。
棧的插入操作稱為“入棧”(push),棧的刪除 操作稱為“出棧”(pop)。
棧具有后進先出(LIFO),先進后出(FILO)的特性。
Java Stack 類
棧是Vector的一個子類,它實現了一個標准的后進先出的棧。
堆棧只定義了默認構造函數,用來創建一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。
除了由Vector定義的所有方法,自己也定義了一些方法:
序號 | 方法描述 |
---|---|
1 | boolean empty() 測試堆棧是否為空。 |
2 | Object peek( ) 查看堆棧頂部的對象,但不從堆棧中移除它。 |
3 | Object pop( ) 移除堆棧頂部的對象,並作為此函數的值返回該對象。 |
4 | Object push(Object element) 把項壓入堆棧頂部。 |
5 | int search(Object element) 返回對象在堆棧中的位置,以 1 為基數。 |
自定的Stack Class
package DataStructe; public class MyStack_Text { static class mystack { int mytop; int stack[]; public mystack(int num) { mytop=-1; stack=new int[num]; } /*出棧*/ void mypop() { mytop--; } /*入棧*/ void mypush(int x) { mytop++; stack[mytop]=x; } /*判空*/ Boolean myisempty() { if(mytop==-1) return true; else return false; } /*取棧頂元素*/ int mypeek() { int peek=stack[mytop]; return peek; } /*棧大小*/ int mysize() { return mytop+1; } } public static void main(String[] args) { mystack myStack=new mystack(20); myStack.mypush(1); myStack.mypush(2); myStack.mypush(3); myStack.mypush(4); System.out.print("棧大小為"+myStack.mysize()); System.out.println(); for(int i=myStack.mytop;i>=0;i--) { int get=myStack.mypeek(); myStack.mypop(); System.out.println(get); } } }