使用堆栈(Stack)模拟实现队列(FIFO)
来源:互联网 发布:遍历二维数组 编辑:程序博客网 时间:2024/05/22 02:06
使用堆栈(Stack)来模拟实现队列(FIFO)功能,要求数据必须存储再堆栈内部。
需要实现:
enqueue(入队)
dequeue(出队)
Empty(判空)
因为堆栈和队列的线性运算不同,在这里只使用一个堆栈是不够的,我们可以用两个堆栈联合完成队列的模拟。
当入队时,将入队的所有元素压入堆栈 stack1 中。
当出队时,将 stack1 中的所有元素压入 stack2 中,如果此时 stack2 不为空,则对 satack2 进行出栈操作,此时的数据就像是队列的先进先出一样。
实现:
#include <iostream>#include <stack>using namespace std;//用堆栈(Stack)模仿队列(FIFO)template<class T>class Queue{public: //1 2 3 4 5 void enqueue(const T& t) //入队 将元素先压入stack1内 { stack1.push(t); } T dequeue() //出队 { if (stack2.size() == 0) { while (stack1.size() > 0) //将stack1里面的所有元素 压入stack2 5 4 3 2 1 { stack2.push(stack1.top()); stack1.pop(); } } if (stack2.size() > 0) { T data=stack2.top(); stack2.pop(); return data; } else { cout << "无元素" << endl; return NULL; } } bool Empty() //如果两个队列都为空,则模拟堆栈为空 { if (stack1.size() == 0 && stack2.size() == 0); return true; else return false; }private: stack<T> stack1; stack<T> stack2;};
阅读全文
0 0
- 使用堆栈(Stack)模拟实现队列(FIFO)
- 使用堆栈(Stack)来模拟队列(FIFO)功能,要求数据必须存储在堆栈内部.需要实现enqueue(入栈),dequeue(出栈),isEmpty(判空)三个功能,并给出单元测试.
- 使用堆栈来模拟队列
- 队列(Queue),堆栈(Stack)
- Queue(队列) Stack(堆栈)
- 如何使用堆栈实现队列
- C++ 队列(queue)堆栈(stack)实现基础
- python实现队列 FIFO
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- 堆栈与队列模拟
- 堆栈模拟队列
- PAT堆栈模拟队列
- 堆栈模拟队列
- Stack 堆栈的实现
- acm 堆栈stack 使用
- 使用两个堆栈实现队列功能
- 使用数组实现堆栈和队列
- PHP使用数组实现堆栈和队列
- 洛谷P1040 加分二叉树(DP)
- 温度转换
- python django环境配置 (二)
- PAT (Basic Level) Practise (中文)1006. 换个格式输出整数 (15)
- C++日历
- 使用堆栈(Stack)模拟实现队列(FIFO)
- centos5.6 php5.3.3 直接yum升级5.6
- hdu 2588 GCD (欧拉函数)
- mybatis全局配置文件详解
- windows下c语言程序调用python实践
- linux tomcat 安装
- Django xadmin注册
- UIAutomator2.0详解(JUnit Annotation篇)
- 初步验证哥德巴赫猜想(即:任意一个大于4的偶数,可以分解成2个质数之和*10000以内)