java 实现字符堆栈 bysking

首先我们自己定一个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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值