赞
踩
思路分析
1、使用数组来模拟栈
2、定义一个top来表示栈顶,初始化为-1
3、入栈操作:当有数据加入栈时,top+1,stack[top]=data
4、入栈操作:当数据被取出时,int value=stack[top],top-1,return value
现在开始写实现代码
class ArrayStack{ private int maxsize; private int[] stack; private int top = -1; public ArrayStack(int maxsize) { this.maxsize = maxsize; stack = new int [this.maxsize]; } //判断栈是否已满 public boolean isFull() { return top == this.maxsize - 1; } //判断是否为空 public boolean isEmpty() { return top == -1; } //遍历栈 public void show() { if(isEmpty()) { System.out.println("栈内没有元素"); return; } for(int i = top; i >= 0; i--) { System.out.print(stack[i]+" "); } } //入栈操作 public void push(int data) { if(isFull()) { System.out.println("栈满,无法添加数据"); return; } stack[++top] = data; } //出栈操作 public int pop() { if(isEmpty()) { //需要注意的是,这里不能直接用一个数字返回表示栈是否为空, //因为栈里的元素本身就是数字,栈里有可能存在表示栈空的数字 //例如:如果返回-1表示栈空,但是有可能栈里本身就有-1这个元素,所以这里用抛出异常来表示栈空 throw new RuntimeException("栈空,没有元素可出栈"); } return stack[top--]; } //查看栈顶元素 public int peek() { if(isEmpty()) { throw new RuntimeException("栈空,栈顶没有元素"); } return stack[top]; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。