java使用两个栈模拟队列的实现

1.使用栈模拟队列

代码的实现借鉴上两篇博客中使用链表实现的栈
public class StackToQueue
    
    
     
      {

	LinkStack
     
     
      
       s1 = new LinkStack
      
      
       
       ();
	LinkStack
       
       
        
         s2 = new LinkStack
        
        
          (); /*这里使用两个栈来模拟队列,s1主要负责入栈,s1栈顶存储的都是最近存储的元素,s2栈顶存储的是s1的栈低元素 * 所以每次入栈的时候要判断s1是否为空,如果s1不为空,则可以直接入栈,否则需要让s2出栈,出栈的元素依次 * 压如s1,出栈的时候相反,如果s2不为空,则直接出栈,否则需要把s1中的元素依次出栈,然后压入s2. * */ void push(T data){ if(s1.top==null&& s2.top==null) s1.push(data); else if(s1.top!=null){ s1.push(data); }else{ while(!s2.isEmpty()) s1.push(s2.pop()); } } T pop(){ if(s2.top==null){ while(!s1.isEmpty()) s2.push(s1.pop()); } return s2.pop(); } boolean isEmpty(){ if(s1.isEmpty() && s2.isEmpty()) return true; else return false; } public static void main(String[] args) { // TODO Auto-generated method stub StackToQueue 
         
           stackToQueue = new StackToQueue 
          
            (); stackToQueue.push(1); stackToQueue.push(11); stackToQueue.push(111); stackToQueue.push(1111); stackToQueue.push(11111); stackToQueue.push(111111); while(!stackToQueue.isEmpty()){ System.out.println(stackToQueue.pop()); } } } 
           
          
        
       
       
      
      
     
     
    
    

2.运行结果





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值