1 /*栈和队列:逻辑结构属于操作受限的线性表
2 *栈:特点先进后出,只允许在栈顶操作
3 *栈的实现方式:顺序栈和链栈
4 *常见的操作:进栈,出栈,获取栈顶,判空,判满,栈的容量
5 *栈的应用
6 *1.逆序相关操作
7 *2.分隔符匹配
8 * */
9 //顺序栈
10 public class MyStack {
11 private long[] arr;
12 private int maxSize;//栈的容量
13 private int top;//栈顶指针
14
15 public MyStack(int s) {
16 maxSize = s;
17 arr = new long[maxSize];
18 top = -1;
19 }
20
21 public boolean isFull(){
22 return top == maxSize - 1;
23 }
24
25 public boolean isEmpty(){
26 return top == -1;
27 }
28
29 //进栈必须先判断满了吗
30 public void push(long key){
31 if(!isFull()){
32 arr[++top] = key;
33 }
34 }
35
36 //出栈前判断是否为空
37 public long pop(){
38 long num = 0;
39 if(!isEmpty()){
40 num = arr[top--];
41 }
42 return num;
43 }
44
45 //得到栈顶元素
46 public long getPeek(){
47 return arr[top];
48 }
49
50 //显示栈的元素
51 public void diaplayStack(){
52 for(int i = top;i >= 0; i--){
53 System.out.print(arr[i] + " ");
54 }
55 System.out.println();
56 }
57
58 public int size(){
59 return top + 1;
60 }
61
62 public long getPeekN(int n){
63 return arr[n];
64 }
65
66 public void displayStack(String s){
67 System.out.println(s);
68 System.out.println("stack----bottom to top");
69 for(int i = 0; i < size(); i++){
70 System.out.print(getPeekN(i) + " ");
71 }
72 System.out.println();
73 }
74
75 }