棧的Java簡單實現


關於棧

  棧(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);
        }
        
    }
    
    

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM