用java写链栈 java怎么使用栈_Stack

 

 

用java写链栈 java怎么使用栈_System_02

 

 跟着样子自己写一个栈

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;
    }

}

用java写链栈 java怎么使用栈_堆栈_03