1 package com.stack;
2
3
4
5 public class StackArray implements Stack{
6
7 private final int LEN = 8;
8 private Object [] elements;
9 private int top;
10
11 public StackArray(){
12 top = -1;
13 elements = new Object[LEN];
14 }
15
16 @Override
17 public int size() {
18 return (top +1);
19 }
20
21 @Override
22 public boolean isEmpty() {
23 return top<0;
24 }
25
26 @Override
27 public void push(Object o) {
28 expendSpace();
29 elements[++top] = o;
30 }
31
32 public void expendSpace(){
33 if(size()>=LEN){
34 Object [] a = new Object[elements.length * 2];
35 for(int i=0;i<elements.length;i++){
36 a[i] = elements[i];
37 }
38 elements = a;
39 }
40 }
41 @Override
42 public Object pop() throws StackEmptyException {
43 if(size()<1){
44 throw new StackEmptyException("ERROR!堆栈为空!");
45 }
46 Object obj = elements[top];
47 elements[top--]=null;
48 return obj;
49 }
50
51 @Override
52 public Object peek() throws StackEmptyException {
53 if(size()<1){
54 throw new StackEmptyException("ERROR!桟为空!");
55 }
56 return elements[top];
57 }
58
59 @Override
60 public String print() {
61 String str = "(";
62 for(int i= 0;i<top+1;i++){
63 str += elements[i];
64 str +=",";
65 }
66 str +=")";
67 return str;
68
69 }
70 }