1 package com.fz.song.stack; 2 3 /** 4 * Created by sfz on 2017/8/29. 5 */ 6 public class MyStack { 7 8 //长度 9 private int size; 10 //数组 11 private int[] data; 12 //栈顶 13 private int top; 14 15 public MyStack(int size) { 16 this.size = size; 17 data = new int[size]; 18 top = 0; 19 } 20 21 /** 22 * 判断是否为空 23 * 24 * @return 25 */ 26 public boolean isEmpty() { 27 return 0 == top; 28 } 29 30 /** 31 * 判满 32 * 33 * @return 34 */ 35 public boolean isFull() { 36 return (0 != size && size == top); 37 } 38 39 40 /** 41 * 清空栈 42 * 43 * @return 44 */ 45 public boolean cleanStack() { 46 if (isEmpty()) { 47 return false; 48 } else { 49 top = 0; 50 return true; 51 } 52 } 53 54 /** 55 * 获取长度 56 * 57 * @return 58 */ 59 public int length() { 60 return top; 61 } 62 63 64 /** 65 * 入栈 66 * 67 * @param elem 68 * @return 69 */ 70 public boolean push(int elem) { 71 72 if (isFull()) { 73 return false; 74 } else { 75 data[top] = elem; 76 top++; 77 return true; 78 } 79 } 80 81 /** 82 * 出栈 83 * 84 * @return 85 */ 86 public int pop() throws Exception { 87 88 if (isEmpty()) { 89 throw new Exception("当前栈为空"); 90 } else { 91 top--; 92 int val = data[top]; 93 return val; 94 } 95 } 96 97 /** 98 * 遍历栈元素 99 */ 100 public void each() { 101 for (int i = 0; i < top; i++) { 102 System.out.print(data[i] + " "); 103 } 104 System.out.println(""); 105 } 106 107 }