class StackException extends Exception {
public StackException() {
}
public StackException(String msg) {
super(msg);
}
}
class Student {
String name;
public Student(String name) {
super();
this.name = name;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return 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 block
e.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 block
e.printStackTrace();
}
}
}
使用一维数组模拟栈
最新推荐文章于 2022-08-08 16:21:34 发布