使用一维数组模拟栈

来源:互联网 发布:猪湾事件知乎 编辑:程序博客网 时间:2024/06/06 17:05
class StackException extends Exception {public StackException() {}public StackException(String msg) {super(msg);}}class Student {String name;public Student(String name) {super();this.name = name;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn name;}}public class Stack {private Object[] elements;private int index;public Stack() {this(5);}public Stack(int max) {elements = new Object[max];}public void push(Object o) throws StackException {if (index == elements.length) {throw new StackException("栈已满");}elements[index++] = o;}public Object pop() throws StackException {if (index == 0) {throw new StackException("栈已空");}// 出栈时,栈顶指针应下移一位 (因为栈顶指针一直是在栈顶元素上面)return elements[--index];}public static void main(String[] args) {Student s1 = new Student("张三");Student s2 = new Student("李四");Student s3 = new Student("王五");Student s4 = new Student("赵六");Student s5 = new Student("陈琪");Student s6 = new Student("李八");Stack stack = new Stack();try {stack.push(s1);stack.push(s2);stack.push(s3);stack.push(s4);stack.push(s5);} catch (StackException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());} catch (StackException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

0 0
原创粉丝点击