跟着样子自己写一个栈
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; } }