標籤:search cte log bsp empty code ref ack table
關於棧
棧(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); } } }
棧的Java簡單實現