首先我们自己定一个Stack堆栈类:
1 public class Stack{ 2 3 char[] array;//声明char类型的数组 4 int flag;//代表栈顶指针 5 6 public Stack(int size)//我不管,我要自己指定大小,于是给它一个size作为参数,用来设置大小 7 { 8 array=new char[size]; 9 this.flag=0;//初始状态 10 } 11 12 public Stack()//默认构造函数,容量100 13 { 14 this(100); 15 } 16 17 public void Push(char c)//入栈 18 { 19 //array[this.flag]=c; 20 //this.flag++; 21 array[this.flag++]=c; 22 } 23 24 public char Pop()//首先判断是否还有元素,没有则返回提示信息,有则返回元素 25 { 26 if(this.flag!=0){ 27 // this.flag--; 28 // return array[this.flag]; 29 return array[--this.flag]; 30 } 31 32 else{ 33 System.out.println("我已经油尽灯枯了!!,求放过---"); 34 } 35 36 return 0; 37 } 38 39 public boolean isEmpty(){//判断栈是否为空 40 if(this.flag==0){ 41 System.out.println("别看了,我是真的空了"); 42 return true; 43 } 44 45 return false; 46 } 47 48 public char getChar(){//若有元素,则获得栈顶元素,不是出栈,flag位置不做改变, 49 50 if(!this.isEmpty()){ 51 // this.flag--; 52 // return array[this.flag]; 53 return array[this.flag-1]; 54 } 55 else{ 56 System.out.println("我已经油尽灯枯了!!求放过---"); 57 } 58 return 0; 59 } 60 61 public void print(){//打印当前栈中的全部元素 62 63 for(char n:array){ 64 System.out.println(n +' '); 65 } 66 } 67 68 } Stack采用数组实现,类的内部定义一个用于存放字符的数组以及一个标志变量flag(用来指向栈顶元素的数组下标),构造函数可默认大小,也可在创建实例的时候指定大小,
类定义了上图所示的方法。
1 public class PopPushDemon { 2 3 public static void main(String[] args) { 4 5 6 Stack s=new Stack(); 7 8 s.Push('水'); 9 System.out.println(s.getChar()); 10 s.Push('来'); 11 System.out.println(s.getChar()); 12 s.Push('自'); 13 System.out.println(s.getChar()); 14 s.Push('海'); 15 System.out.println(s.getChar()); 16 s.Push('上'); 17 18 System.out.println("出栈分割符----------------------------------"); 19 20 System.out.println(s.Pop()); 21 System.out.println(s.Pop()); 22 System.out.println(s.Pop()); 23 System.out.println(s.Pop()); 24 System.out.println(s.Pop()); 25 26 s.isEmpty(); 27 28 System.out.println("我不信,我要再Pop(出栈)一次:"); 29 System.out.println(s.Pop()); 30 31 } 32 33 } 测试结果打印:
转载于:https://www.cnblogs.com/bysking/p/java_pushpop.html
相关资源:java中用栈的思想实现字符串括号匹配