`

使用栈实现队列

阅读更多

 

思路: 思路比较简单,使用两个栈,一个栈A负责入队,一个栈B负责出队,出队的时候,先判断栈B的元素是否为空,如果为空则将栈A的元素全部出栈放入栈B中,然后栈B元素出栈

 

 

代码:

package com.buka.designer.statkqueue;

import java.util.Stack;

/**
 *  用栈实现队列
 */
public class StackQueue {

    private Stack<Integer> stackA = new Stack<>();

    private Stack<Integer> stackB = new Stack<>();

    /**
     * 入队操作
     */
    public void enQueue(int item) {
        stackA.push(item);
    }

    /**
     * 出队操作
     *
     */
    public Integer deQueue() {
        if (stackB.isEmpty()) {
            if (stackA.isEmpty()) {
                return null;
            }

            transfer();
        }
        return stackB.pop();
    }

    /**
     * 转换
     */
    public void transfer () {
        while (!stackA.isEmpty()) {
            stackB.push(stackA.pop());
        }
    }


    public static void main(String[] args) {

        StackQueue stackQueue = new StackQueue();
        stackQueue.enQueue(1);
        stackQueue.enQueue(2);
        stackQueue.enQueue(3);
        stackQueue.enQueue(4);
        System.out.println(stackQueue.deQueue());
        System.out.println(stackQueue.deQueue());
        stackQueue.enQueue(5);
        System.out.println(stackQueue.deQueue());
        System.out.println(stackQueue.deQueue());
        System.out.println(stackQueue.deQueue());
        System.out.println(stackQueue.deQueue());

    }


}

 

分享到:
评论

相关推荐

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

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

    栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值

    栈实现 队列实现 双栈实现队列 双队列实现栈 栈实现O(n)求当前栈最大值 http://blog.csdn.net/ssuchange/article/details/17398007

    C语言实现栈与队列

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

    python用栈实现队列

    python用栈实现队列,简单明了易于进一步思考和总结发散思维。

    链表实现栈和队列(经典程序)

    在链表中实现队列,通常需要两个指针:一个指向队首(front),一个指向队尾(rear)。入队操作在队尾进行,而出队操作则从队首开始。 在"delimetermach.cpp"这个源代码文件中,很可能包含了具体的链表实现栈和队列...

    同时使用栈和队列实现回文

    总结来说,通过同时使用栈和队列,我们可以有效地检查一个字符串是否为回文,这种方法充分利用了两种数据结构的特点,使得算法逻辑清晰且易于实现。在实际应用中,理解和灵活运用不同的数据结构是解决复杂问题的关键...

    用栈实现队列逆序输出

    在计算机科学中,数据结构是组织和管理数据的重要方式...通过这样的设计,我们可以在不改变队列原有结构的情况下,使用栈来实现队列的逆序输出。这展示了数据结构间的灵活性和转换可能性,是算法设计中的一种常见技巧。

    用栈实现队列(java代码).docx

    ### 使用两个栈实现队列(Java代码) #### 一、问题背景 在计算机科学中,队列是一种重要的数据结构,遵循先进先出(FIFO)原则。而在实际应用中,有时候我们可能没有现成的队列类或者接口可用,这时就需要通过...

    利用栈和队列实现迷宫

    "利用栈和队列实现迷宫" 通过栈和队列两种不同的方法来实现迷宫问题。队列方法求出的迷宫路径是最短路径。迷宫问题是指在一个迷宫中找到从起点到终点的路径。这里我们使用栈和队列两种数据结构来解决这个问题。 栈...

    数据结构实验栈和队列详细实验报告

    2. **链式存储结构**:链式存储结构使用链表来实现栈和队列,每个元素包含数据域和指针域,指针域指向下一个元素。这样,插入和删除操作只需要改变几个指针,而不需要移动元素。链式结构提供了更大的灵活性,但元素...

    栈和队列的基本操作

    在顺序存储结构中,栈和队列可以使用数组来实现。栈的顺序存储有“后进先出”的特点,即最后一个入栈的元素将是第一个出栈的元素。队列的顺序存储也有“先进先出”的特点,即第一个入队的元素将是第一个出队的元素。...

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

    ### 栈和队列的基本操作实现及其应用实验报告 #### 实验目的 1. **熟练掌握栈和队列的基本操作**:在数组和链表两种存储结构上实现栈和队列的基本操作。 2. **应用栈和队列解决实际问题**:通过具体的编程练习,...

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

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

    队列实现栈栈实现队列.md

    队列实现栈栈实现队列.md

    栈和队列源代码

    LinkedList可以很方便地实现队列,因为它支持在两端进行快速操作。 在给定的“例题03 栈和队列”中,可能包含了各种基于栈和队列的算法问题,例如: 1. **括号匹配**:使用栈来检查一个字符串中的括号是否正确配对...

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

    在实现队列时,需要定义队列的类型和结构体。例如: ```c typedef int QElemType; // 队列类型定义 typedef struct SeqQueue { QElemType *base; // 队列的底部指针 QElemType *front; // 队列的头部指针 ...

    用栈和队列编写的停车管理系统

    对于队列的实现,代码示例中定义了`struct Queue`来表示队列,并且使用链表的形式进行存储。`InitQueue`函数用于初始化队列,`EnQueue`函数用于向队列末尾添加元素,`DeQueue`函数用于从队列头部移除元素。 ### ...

    数据结构栈和队列解决迷宫问题

    本文档主要涉及到数据结构的两个重要概念:栈和队列,并介绍了如何使用这两个数据结构来解决迷宫问题。 一、栈的基本概念 栈是一种后进先出(Last-In-First-Out,LIFO)的数据结构。栈的基本操作包括入栈(push)...

    栈和队列(基础知识,单项选择题,填空题,简答题,程序)

    1. 实现循环队列的倒置可以采用辅助栈的方法,首先将队列的所有元素依次出队并入栈,再将栈中所有元素出栈并重新入队,即可实现队列内容的倒置。 综上所述,栈和队列在数据结构中占据核心地位,熟练掌握其原理和...

    使用栈和队列实现魔王语言解释程序

    这里可以使用栈来处理括号匹配。每当遇到一个左括号,就将其压入栈中;遇到右括号时,检查栈顶元素是否为相应的左括号,如果是,则弹出栈顶元素,表示一对括号匹配成功。如果栈为空或栈顶不是对应的左括号,说明括号...

Global site tag (gtag.js) - Google Analytics