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 }