栈————用队列实现栈

 1 class MyStack {
 2 public:
 3     queue<int> q;
 4     /** Initialize your data structure here. */
 5     MyStack() {
 6
 7     }
 8     /*
 9     --------------
10     push        pop
11                 front
12     */
13     /** Push element x onto stack. */
14     void push(int x) {
15         //push之后把x放到最前面就可以了
16         q.push(x);
17         for(int i=0;i<q.size()-1;i++){
18             q.push(q.front());
19             q.pop();
20         }
21     }
22
23     /** Removes the element on top of the stack and returns that element. */
24     int pop() {
25         int tmp = q.front();
26         q.pop();
27         return tmp;
28     }
29
30     /** Get the top element. */
31     int top() {
32         return q.front();
33     }
34
35     /** Returns whether the stack is empty. */
36     bool empty() {
37         return q.empty();
38     }
39 };
40
41 /**
42  * Your MyStack object will be instantiated and called as such:
43  * MyStack* obj = new MyStack();
44  * obj->push(x);
45  * int param_2 = obj->pop();
46  * int param_3 = obj->top();
47  * bool param_4 = obj->empty();
48  */

原文地址:https://www.cnblogs.com/pacino12134/p/11028628.html

时间: 2024-10-31 02:47:25

栈————用队列实现栈的相关文章

数据结构(7)----栈与队列之栈的应用四则运算表达式求值

栈与队列之栈的应用四则运算表达式求值 栈在四则运算表达式求值的应用为逆波兰表达式(后缀表达式) 普通算式(中缀表达式):9 + (3 - 1) * 3 + 10 / 2     ---(1) 逆波兰表达式(后缀表达式):9 3 1 - 3 * + 10 2 /         ---(2) 1:逆波兰表达式的计算规则 从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,再把运算结果进栈,一直到最终获得结果.接下来我们以(2)式为例:

【栈和队列】栈和队列的基本应用(C++版)

栈和队列的应用非常之广,只要问题满足后进先出和先进先出原则,均可使用栈和队列作为其数据结构. (注意:在下面的代码中,我直接使用C++标准库提供的模板stack和queue,如果您用C语言,则要用前面介绍的方法自己实现stack和queue) 栈的应用 数制转换: 将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题,很容易通过"除B取余法"来解决. [例]将十进制数13转化为二进制数. 解答:按除2取余法,得到的余数依次是1.0.1.1,则十进制数转化为二进制数为1101

《大话数据结构》笔记(4-1)--栈与队列:栈

栈的Java实现代码: https://github.com/Lyu0709/data-structure/blob/master/src/com/coding/basic/stack/Stack.java 逆波兰算法实现: https://github.com/Lyu0709/data-structure/blob/master/src/com/coding/basic/stack/RPN.java 第四章  栈与队列 栈 定义 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(b

LeetCode225 栈&#183;用队列实现栈(C++)

题目描述: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的. 你所使用的语言也许不支持队列. 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可. 你可以假设所有操作都

数据结构复习--栈和队列(1)--栈

1.栈和队列简介: 栈和队列是非常重要的两种数据结构,在软件设计中应用很多.栈和队列也是线性结构,线性表,栈和队列这三种数据元素和数据元素间的逻辑完全相同.差别是线性表的操作不受限制,而栈和队列的操作收到限制,栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以把栈和队列称为操作受限的线性表 栈: 栈(Stack)是操作限定在表的尾端进行的线性表.表尾由于要进行插入,删除等操作,所以,它具有特殊含义,把表尾成为栈顶(Top),另一端是固定的,叫栈底(Botto

3.1_栈和队列_栈

[栈的定义] 栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 栈又称为后进先出(Last In First Out)线性表,简称LIFO结构. (PS:定义中的表尾是指 栈顶!) [几个关键词 ] [ 栈顶(top) ] 允许插入和删除的一端称为 栈顶. [ 栈底(bottom) ] 栈顶的另一端称为 栈底. [ 空栈 ] 不含任何数据元素的栈. [栈的插入操作——进栈(push)] 栈的插入操作,叫做进栈,也称为压栈.入栈. [栈的删除操作——出栈(pop)] 栈的删除操作,叫做出

算法习题---栈与队列之栈的数学性质

一:栈的数学性质 当n个编号元素以某种顺序进栈,并且可以在任意时刻出栈,所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即 二:题目一: 试着将1,2,3,4,5,6,六个数字入栈,则出栈方式有几种?使用数学性质可以知道有132种 三:其他题目:判断栈给定的操作序列的合法性 I入栈O出栈,例如ABC入栈,出栈为CBA,那么给定序列为IIIOOO,表示3个先入栈,然后出栈 现在给定一个序列(只含IO)要求判断其是否合法 四:性质 1.IO个数一致 2.开始到中间任一位置I的数目大于O

【数据结构】栈与队列 Part1:栈的创建与相关函数

First.栈(Stack) 定义:后进先出的线性表 操作: #include<stack> 头文件 stack<int> s;      创建int类型的栈s s.push(x);           将x放入栈中 s.top();               读取栈顶元素 s.pop();              释放栈顶 s.size();              返回栈中元素数目 s.empty();          若栈为空则返回真,反之则返回假 示范代码: 1 #

数据结构与算法系列研究二——栈和队列

栈和队列的相关问题分析 一.栈和队列定义 栈和队列是两种重要的数据结构.从结构特性角度看,栈和队列也是线性表,其特殊性在于它们的基本操作是线性表的子集,是操作受限的线性表,可称为限定性的数据结构:从数据类型角度看,其操作规则与线性表大不相同,是完全不同于线性表的抽象数据类型.                    图1 栈的结构                                                 图2 队列的结构   1.1.栈是限定在表的一端进行插入和删除操作的线性