码迷,mamicode.com
首页 > 其他好文 > 详细

005 两个栈组成队列

时间:2019-01-09 16:10:59      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:上进   多个   bsp   theme   alt   注意   完成   row   else   

一:主题

1.题目

  用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

 

2.程序思路

  从队列与栈的特点上进行写程序。

  首先,栈的特点是先进后出,而队列是先进先出。

  所以,要实现队列,需要使用两个栈进行组合。

  做法,我以为,让第一个作为push的栈,然后,pop的时候,将第一个栈中的数据都转移到栈2,然后把最上面的弹出来。

  注意点:可能一次性push多个数据,所以,在pop的时候,再去清空栈1。  

 

3.程序

 1 package first;
 2 
 3 import com.sun.org.apache.bcel.internal.generic.PUSH;
 4 import sun.awt.windows.ThemeReader;
 5 
 6 import javax.xml.soap.Node;
 7 import java.util.Stack;
 8 
 9 public class StackWithTwoQueues {
10     //作为入栈
11     private static Stack<Integer> stack1=new Stack<Integer>();
12     //作为出栈
13     private static Stack<Integer> stack2=new Stack<Integer>();
14 
15     /**
16      * 测试
17      * @param args
18      */
19     public static void main(String[] args) {
20         push(1);
21         push(2);
22         push(5);
23         int val=pop();
24         System.out.println(val);
25         push(1);
26         int val2=pop();
27         System.out.println(val2);
28 
29     }
30     /**
31      * 实现push方法
32      */
33 
34     public static void push(int val){
35         stack1.push(val);
36     }
37 
38     /**
39      * 实现pop方法
40      * @return
41      */
42     public static int pop(){
43         //将数据都放到2中
44         while (!stack1.isEmpty()){
45             stack2.push(stack1.pop());
46         }
47         if(!stack2.isEmpty()){
48             int node=stack2.pop();
49             return node;
50         }else {
51             throw new RuntimeException("null");
52         }
53     }
54 }

 

4.现象

  技术分享图片

 

005 两个栈组成队列

标签:上进   多个   bsp   theme   alt   注意   完成   row   else   

原文地址:https://www.cnblogs.com/juncaoit/p/10244885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!