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

import java.util.Stack;

/**
 * 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
 * @author user
 *
 *思路:队列是先入先出,栈是先入后出,可以将数据压入第一个栈后,在弹出来压入第二个栈,弹得时候直接从第二个栈弹出,弹出后又将
 *第二个栈中的所有数据弹出重新压入的一个栈
 */
public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
		while(!stack1.isEmpty()) {
			stack2.push(stack1.pop());
		}
		int returnData = stack2.pop();
		while(!stack2.isEmpty()) {
			stack1.push(stack2.pop());
		}
		return returnData;
    }
}
时间: 2024-10-05 05:02:12

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

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

public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop() { if(stack1.empty()&&stack2.empty()){ th

面试题9-用两个栈来实现一个队列,完成队列的Push和Pop操作

题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 一个栈压入元素,而另一个栈作为缓冲,将栈1的元素出栈后压入栈2中 代码 import java.util.Stack; /** *两个栈实现一个队列 * @author MSI */ public class Requeue{ Stack<Integer> sk1=new Stack<Integer>(); Stack<Integer> sk2=new Stack<

N5-用两个栈来实现一个队列

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; /** * 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. * @author Sonya * *进队列时,直接进入栈一中,出栈时先将栈一中的所有按照出栈次序依序压入栈2中,弹出栈2首个元素 *即为第一个入队列的元素,然后再将2所有的元素依次压入栈一中 */ public class N5_Two_stack_to_

用两个栈模拟实现一个队列

题目:如何用两个栈模拟实现一个队列?  如果这两个堆栈的容量分别是m和n(m>n),你的方法能保证的队列容量是多少?(这里讨论的是顺序栈,如果是链式栈的话完全没有必要考虑空间) 分析:栈的特点是“后进先出(LIFO)”,而队列的特点是“先进先出(FIFO)”.用两个栈模拟实现一个队列的基本思路是:用一个栈作为存储空间,另一个栈作为输出缓冲区,把元素按顺序压入两栈(模拟的队列),并按此顺序出队并输出即可. 如下图,用容量为m的栈作为存储空间,容量为n的栈作为输出缓冲区,一开始先将n个元素压入(pu

9.3栈和队列(七)——用两个栈来实现一个队列

/** * 功能:用两个栈来实现一个队列. */ import java.util.*; /** * 思路:需要修改peek()和pop(),以相反顺序执行操作.可以利用第二个栈来反转元素的次序. * stackNewest顶端为最新元素,stackOldest顶端为最旧元素,利用两个栈的元素的转移来实现. * */ public class MyQuene1 { Stack stackNewest ,stackOldest ; public MyQuene1(){ stackNewest= n

说明如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢。注意PUSH和POP操作的时间应为O(1)。

校招开始了,发现自己数据结构,Algorithms的知识都还给老师了.喵了个呜的! <算法导论>开啃吧~ 从第三章数据结构开始吧~ 10.1-2 : 如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢.注意PUSH和POP操作的时间应为O(1). 解:思想是,建一维数组,两个栈stack1和stack2分别从数组A[0]和A[N-1]开始push,栈指针相遇时,两个栈中元素总数为n. 在思考怎么用java 实现,晚些时候 上代码吧~

011实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)

实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值. push,pop和min函数的时间复杂度都为O(1). 看到这个题目最直接的反应是用一个变量来保存当前栈的最小值,让我们来看看这样可行否? 如果栈一直push那是没有问题,入栈元素如果比当前最小值还小,那就更新当前最小值. 可是如果pop掉的栈顶元素就是最小值,那么我们如何更新最小值呢?显然不太好办. 既然只用一个变量没法解决这个问题,那我们就增加变量.如果说每个结点除了保存当前的 值, 另外再保存一个从该结点到栈底的

【转】java中byte数组与int类型的转换(两种方式)----不错

原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 第一种方法: public static byte[] int2byte(int

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 方法一 /** * int到byte[] * @param i * @return */ public static byte[] intToByteArray(int i) { byte[] resu