`
cdwzwd
  • 浏览: 123572 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

使用两个栈实现队列功能

 
阅读更多

主要思想:
将元素分为两部分啊,b。a作为入栈,b作为出栈。
1、将所有元素入栈
2、当出栈为空时,将a中元素转移到b中。


代码

import java.util.Stack;

public class MyQueue<T> {

	private Stack<T> stackIn = new Stack<T>();  //提供入栈
	private Stack<T> stackOut = new Stack<T>();  //提供出栈
	public void enQueue(T element){
		stackIn.push(element);
	}
	
	private void shift(){
		while(!stackIn.isEmpty()){
			stackOut.push(stackIn.pop());
		}
	}
	public T deQueue(){
		if(stackOut.isEmpty()) 
			shift();
        if(! stackOut.isEmpty()){
        	return stackOut.pop();
        }
        else return null;
	}
	
	public static void main(String[] args){
		MyQueue myList = new MyQueue<String>();
		myList.enQueue("abc");
		myList.enQueue("def");
		myList.enQueue("r");
		myList.enQueue("s");
		myList.enQueue("t");
		myList.enQueue("u");
		System.out.print(myList.deQueue());
		System.out.print(myList.deQueue());
		System.out.print(myList.deQueue());		
		System.out.print(myList.deQueue());
		myList.enQueue("y");
		myList.enQueue("hjj");
		System.out.print(myList.deQueue());
	}
}
0
0
分享到:
评论

相关推荐

    用两个栈实现一个队列的功能?要求给出算法和思路

    ### 使用两个栈实现队列功能 #### 背景与目的 在计算机科学领域中,数据结构是存储和组织数据的方式之一,对于提高程序效率至关重要。队列是一种先进先出(FIFO)的数据结构,而栈则是一种后进先出(LIFO)的数据...

    两个栈实现一个队列

    要使用两个栈实现队列,我们需要一个入队栈(pushStack)和一个出队栈(popStack)。入队操作(enqueue)相当于向pushStack中添加元素,而出队操作(dequeue)则涉及将pushStack中的元素转移到popStack,然后从pop...

    C++实现用栈实现队列的功能

    标题“C++实现用栈实现队列的功能”表明我们将使用C++编程语言,通过创建两个栈来实现队列的主要功能:入队(enqueue)和出队(dequeue)。这种方法的思路是,一个栈用于入队操作,另一个栈用于出队操作,以此来克服...

    C语言用两个栈实现一个队列的功能

    用量个栈实现一个队列,使其可以有进队和出队的操作。

    PHP使用两个栈实现队列功能的方法

    在编程领域,数据结构是解决问题的关键...通过上述的两个栈实现队列,我们可以理解数据结构转换的灵活性,并在实际项目中根据需求选择最适合的实现方式。这不仅增强了我们的编程技能,也为解决更复杂的问题奠定了基础。

    C语言实现栈与队列

    - `libQueue.c` 和 `libQueue.h`:这是实现队列功能的源代码文件。`libQueue.c`包含了队列的实现,如初始化、插入、删除等操作;`libQueue.h`则是头文件,声明了相关的函数接口供其他模块调用。 - `libStack.c` 和...

    用两个栈实现一个队列的功能

    //用两个栈实现一个队列的功能 //栈s1提供入队列的功能,栈s2提供出队列的功能 //入队列:如s1 //出队列:(1)如果s2不为空,则直接弹出栈s2的数据(2)如果栈s2为空,则依次弹出栈s1的数据,放入s2中,再弹出栈s2的...

    03-用两个栈实现一个队列.md

    在分析算法的时间复杂度时,我们发现如果用两个栈实现队列,add操作的时间复杂度为O(1),delete操作的时间复杂度可能为O(n),因为在某些情况下我们需要将stack1中的所有元素转移到stack2中。然而,在实际操作中,...

    栈和队列的基本操作

    栈和队列是计算机科学中两个基本的数据结构,它们的基本操作包括进栈、出栈、进队、出队等。栈是一种后进先出的数据结构,即最后一个入栈的元素将是第一个出栈的元素。队列是一种先进先出的数据结构,即第一个入队的...

    数据结构栈和队列试题及答案

    循环队列通过使用指针来实现队列的头尾相接,该说法正确。 16. **循环队列的空间溢出问题** 尽管循环队列能够有效利用内存空间,但仍存在空间溢出的问题,该说法正确。 17. **队列和栈的共同特征** 队列和栈...

    C++数据结构实验_实现共享栈,链栈,循环队列,链队列

    在C++中,循环队列通常用数组实现,通过两个指针分别指向队头和队尾,队列的入队(enqueue)和出队(dequeue)操作可以通过简单的指针移动来完成,避免了数组扩容的开销。 最后,我们讨论链队列。链队列是基于链表...

    如何使用两个栈实现队列Java

    这种实现方法虽然在pop操作时可能会有额外的时间开销(如果栈2为空,需要转移所有元素),但在某些情况下,如空间限制或特定应用场景下,使用两个栈实现队列可能比直接使用Java提供的Queue接口更具优势,因为它避免...

    栈和队列的基本操作实现及其应用实验报告

    2. **程序清单**:包含初始化栈、初始化队列、入栈、出栈等功能的实现代码。 #### 程序清单示例 ```cpp #include #include #include using namespace std; #define INIT_SIZE 100 #define INCREMENT 10 #...

    通过2个栈 模拟队列。

    标题“通过2个栈模拟队列”指出我们将探讨如何使用两个栈来实现队列的基本操作,如入队(enqueue)和出队(dequeue)。这种方法主要针对那些无法直接使用队列数据结构,但又需要队列功能的场景。 描述中提到的...

    JS实现利用两个队列表示一个栈的方法

    通过这种方法,我们可以利用两个队列的优势,实现栈的基本功能。虽然这不是最直接或效率最高的实现方式,但它展示了数据结构间转换的概念,并且可以作为理解数据结构相互关系的一个练习。在实际应用中,使用原生的...

    栈和队列的基本操作实现及其应用

    通过这个实验,我们可以学习到如何用C语言实现基本的栈和队列操作,并将它们应用于实际问题,如回文判断。此外,还能掌握数据结构和算法在程序设计中的重要性,以及如何提高代码的可读性和可维护性。

    C语言用栈和队列实现的回文检测功能示例

    通过使用栈和队列,可以分别存储字符串的前半部分和后半部分,然后比较两个部分是否相同,以判断字符串是否是一个回文。 下面是使用栈和队列实现回文检测功能的示例代码: 首先,我们需要定义栈和队列的结构体: ...

    剑指offer刷题记录之用两个栈实现队列

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 2. 解题思路 2.1 分析 栈:先进后出 队列:先进先出 要求用两个栈{stack1,stack2}实现一个队列,也就是说我们需要使用栈的push和pop...

    栈和队列 实验报告

    实验的两个主要任务是: 1. 实现顺序栈,包括定义栈的结构,以及实现初始化、压栈、弹栈、查看栈顶和显示栈内容的函数。 2. 实现循环队列,包括定义队列结构,实现初始化、入队、出队、查看队首和显示队列状态的函数...

Global site tag (gtag.js) - Google Analytics