Life

Wednesday, October 31, 2018

两个栈实现一个队列

如何用两个栈实现一个队列?
思路:
入栈:元素进入stack1;
出栈:
若stack2为空,stack1 不为空,将stack1所有元素出栈进入stack2,stack2从栈顶出栈;
若stack2不为空,则stack2栈顶出栈。
java代码实现示例:
package test;

import java.util.Stack;
/**
 * Title:StackToQueue
 * Description:两个栈实现一个队列
 * @author LeslieTian
 * @date   2018-10-30 下午8:18:43
 * @version 1.0
 */
public class StackToQueue {
    Stack stack1 = new Stack();
    Stack stack2 = new Stack();
    
    public static void main(String[] args) {
  StackToQueue s = new StackToQueue();
  s.add(3);
  s.add(4);
  s.add(5);
  System.out.println(s.delect());
  System.out.println(s.delect());
  System.out.println(s.delect());
  System.out.println(s.delect());
 }
    /**
     * 队列入队
     * @param x
     */
    public void add(int x){
     stack1.push(x);
    }
    /**
     * 队列出队
     */
    public int delect(){
     if((stack2.size()+stack1.size())!=0){//队列不为空
      if(stack2.isEmpty()){//stack2为空,stack1不为空
       //stack to stack2
       stack1Tostack2();
       return stack2.pop();
      }else{//stack2不为空
       return stack2.pop();
      }
     }
     else {//队列为空
      System.out.println("队列为空!");
      return -1; 
  }
    }
    public void stack1Tostack2(){//stack1 元素倒入stack2中
     while(!stack1.isEmpty()){
      stack2.push(stack1.pop());
     }
    }
}
输出:
3
4
5
队列为空!
-1
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者Leslie Tien和本文原始地址:
https://leslietien.blogspot.com/2018/10/blog-post_30.html

No comments:

Post a Comment