关于JAVA数据结构中的栈操作
1 package com.stack; 2 3 4 //自定义异常类 5 public class StackEmptyException extends Exception { 6 7 private static final long serialVersionUID = 1L; 8 public StackEmptyException(){ 9 10 } 11 public StackEmptyException(String message){ 12 super(message); 13 } 14 15 }
1 package com.stack; 2 3 public interface Stack { 4 //返回桟的大小 5 public int size(); 6 //判断桟是否为空 7 public boolean isEmpty(); 8 //数据元素入桟 9 public void push(Object o); 10 //栈顶元素出栈 11 public Object pop() throws StackEmptyException; 12 //取出栈顶元素 13 public Object peek() throws StackEmptyException; 14 //打印输出 15 public String print(); 16 }
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 }
1 package com.stack; 2 3 public class Test { 4 5 /** 6 * @param args 7 * @throws StackEmptyException 8 */ 9 public static void main(String[] args) throws StackEmptyException { 10 StackArray sa = new StackArray(); 11 //You Code here!! 12 } 13 14 }