原创转载请注明出处:http://agilestyle.iteye.com/blog/2360962
Solution
1. Using 2 stacks
1.1. One stack to accept incoming values in FILO manner
1.2. The other stack to reverse the values in first stack, so LIFO+LIFO becomes FIFO for value retrieval
2. An example
2.1. Incoming order: (1,2,3)
2.2. Stack 1 storage order(top to bottom): (3,2,1)
2.3. Stack 2 after pushing and popping all values in Stack 1:(top to bottom): (1,2,3)
3. One important thing
The reverse of all values in Stack 1 to stack 2 happens only stack 2 is empty!!!
package org.fool.java.test; import java.util.Stack; public class MyStackQueueTest { public static void main(String[] args) throws Exception { MyStackQueue<Integer> q = new MyStackQueue<>(); q.enQueue(1); q.enQueue(2); q.enQueue(3); q.enQueue(4); System.out.println(q.deQueue()); System.out.println(q.deQueue()); System.out.println(q.deQueue()); System.out.println(q.deQueue()); q.enQueue(5); q.enQueue(6); q.enQueue(7); System.out.println(q.deQueue()); System.out.println(q.deQueue()); System.out.println(q.deQueue()); } } class MyStackQueue<T> { Stack<T> s1 = new Stack<>(); Stack<T> s2 = new Stack<>(); public void enQueue(T k) { s1.push(k); } public T deQueue() throws Exception { if(s2.isEmpty() && s1.isEmpty()) { // if no elements at all throw new Exception("no elements!"); } else if(s2.isEmpty()) { // get all elements in s1 and save to s2 while (!s1.isEmpty()) { s2.push(s1.pop()); } } return s2.pop(); } }
Console Output
Reference
相关推荐
### C++ STL中Stack和Queue的使用详解 #### 一、引言 在C++标准模板库(STL)中,提供了许多高效的容器类,其中包括`stack`和`queue`。这两种容器非常适合处理需要先进后出(FILO, First In Last Out)或先进先出(FIFO,...
Queue() //构造函数 bool empty() //返回队列是否已空 bool full() //返回队列是否已满 int serve() //出队列,成功返回0,否则返回-1 int append(const string &item) //item进队列,成功返回0,否则返回-1 int ...
stack_and_queue.cpp
本源码实现了两个类,一个是带有最大值的栈和一个是带有最大值的队列。栈利用了两个C++的stack,队列利用了C++的queue。
总之,TIA博途中的GF_stack_LIFO库文件提供了LIFO原则的堆栈数据结构,为PLC编程带来便利。理解堆栈的工作原理和如何在TIA博途中应用全局FB库,能帮助工程师更好地解决自动化控制领域的各种问题。
本文将深入探讨标题和描述中提到的一些关键集合类型,包括Map、Set、List、Queue、Stack以及它们的特点和用法。 首先,Collection接口是所有集合类型的父接口,它分为两个主要子接口:List和Set。List接口用于存储...
栈(Stack)是一种“后进先出”(Last In, First Out,简称LIFO)的数据结构,它的工作原理类似于现实生活中的堆叠物品。栈的主要操作包括压入(Push)和弹出(Pop)。压入操作将元素添加到栈顶,而弹出操作则从栈顶...
本篇将详细解释如何使用两个栈(stack)来模拟实现一个队列(queue)的功能。 首先,我们要理解栈和队列的基本特性。栈是一种后进先出(LIFO,Last In First Out)的数据结构,其操作主要包括压入(push)和弹出...
在计算机科学中,栈(Stack)和队列(Queue)是两种基本的数据结构,它们在程序设计中扮演着至关重要的角色。本资料“Stack_Queue_Stack_源码.zip”可能包含了一些关于栈和队列的实现源代码,可能是用C++、Java或...
C++ STL Adaptor stack、queue和vector的使用 C++ STL 提供了多种容器类,包括 stack、queue 和vector 等,这些容器类都是基于 Adaptor 模式实现的。下面我们将详细介绍这些容器类的使用方法和常见操作。 Stack ...
栈是一种后进先出(LIFO, Last In First Out)的数据结构,而队列则是一种先进先出(FIFO, First In First Out)的数据结构。 ### 栈(Stack) 栈是一种线性数据结构,它的主要特点是只允许在表的一端进行插入和...
堆栈Stack,_队列Queue【数据结构和算法入门5】
stackqueue.h
总结来说,`stack`适用于需要快速访问最近插入的元素且遵循LIFO原则的场景,`queue`适用于需要按照FIFO原则处理元素的场景,而`vector`则适用于需要动态管理数组大小的场景。这三种容器都是C++标准模板库(STL)的一...
数据结构实验栈和队列
数据结构中的栈(Stack)和队列(Queue)是两种重要的抽象数据类型,它们都是线性表的变体,但有着特殊的操作限制。在Chapter Three Stack & Queue的教学课件中,主要介绍了这两种数据结构的基本概念、操作、存储...
### C++ 中 Stack (栈) 与 Queue (队列) 的深入解析 #### 一、Stack (栈) 栈是一种线性数据结构,它遵循“后进先出”(Last In First Out, LIFO)的原则。栈的主要应用在于解决具有递归性质的问题,如表达式求值、...
在这个“Praktikum5(Stack dan Queue)_C++_”的学习资源中,我们将深入探讨两种重要的数据结构:栈(Stack)和队列(Queue),它们是理解和解决问题的基础工具。 栈是一种后进先出(LIFO,Last In First Out)的...
palindrome(STACK,QUEUE).cpp