Java 棧的使用


 

 

 

 跟着樣子自己寫一個棧

package demoStack;

import java.util.Arrays;

public class Stack {
    private int size ; //數組的大小
    private int top ;  //頭部指針
    private char [] stackArray ; //模擬棧的數組
    
    public Stack(int size) {
        super();
        this.size =size ;
        stackArray = new char[size];
        this.top = -1 ; ////初始化棧的時候由於棧內沒有元素,棧頂下標設為-1
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Stack stack = new Stack(4);
        System.out.println("棧是否為空:"+stack.empty());
        stack.push('a');
        stack.push('b');
        stack.push('c');
        stack.push('d');
        stack.push('e');
        char peek = stack.peek();
        System.out.println("棧頂的元素是:"+peek);
        char pop = stack.pop();
        System.out.println("出棧的元素是"+pop);
        int search = stack.search('b');
        System.out.println("b的位置下標是:"+search);
        stack.traverse();

    }
    //測試堆棧是否為空。
    public boolean empty() {
        
        return (top==-1)? true :false ;
        
    }
    //查看堆棧頂部的對象,但不從堆棧中移除它
    public char peek(){
        return stackArray[top];
    }
    //移除堆棧頂部的對象,並作為此函數的值返回該對象。
    public char pop() {
        if(empty()) {
            System.out.println("Stack is Empty");
            return 0;
        }
        return stackArray[top--];
        
    }
    public void doubleStack() {
        char [] newStackArray = new char [size*2] ;
        for(int i=0;i<size;i++) {
            newStackArray[i] = stackArray[i];
        }
        size = size * 2;
        stackArray = newStackArray ;
        
    }
    //把項壓入堆棧頂部。
    public void push(char ch) {
        if(top ==size-1) { //棧已滿了,需要擴容
            doubleStack();
        }
        stackArray[++top] = ch;
    }
    //返回對象在堆棧中的位置,以 1 為基數
    public void traverse() {
        System.out.println("遍歷棧里的元素");
        for(int i=top;i>=0;i--) {
            System.out.println(stackArray[i]);
        }
    }
    public int search(char ch) {
        for(int i=0;i<=top;i++) {
            if( ch == stackArray[i]) {
                return i;
            }
        }
        return -1;
    }

}

 


免責聲明!

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



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