C++ stack用法

C++库以提供“模板”为主。所谓模板,是指不必预先制定类型的函数或类。我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来管理数据。为应对多种需求,STL为用户提供了多种名为容器(Container)的类,用于管理数据集合。在创建动态数组、表、栈、队列等数据结构时,我们只需要定义对应的容器,然后调用相应成员函数或算法即可。

stack成员函数示例

  • size( ) :返回栈中元素个数
  • top( ) :返回栈顶的元素
  • pop( ) :从栈中取出并删除元素
  • push(e) :向栈中添加元素e
  • empty( ) :栈为空时返回true

示例训练

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

分析

应用一个辅助栈,主栈A用来保存实际数据,辅栈B用来保存最小元素。压栈的时候,如果元素比B的栈顶小,则将该元素同时压入A栈和B栈,否则只压A栈;出栈的时候,若A栈顶元素等于B栈顶元素,则同时出栈,否则A出栈B不出栈。

class Solution {
public:
    stack<int> stack1,stack2;
    void push(int value) {
        stack1.push(value);
        if(stack2.empty())
            stack2.push(value);
        else{
            if(value < stack2.top())
                stack2.push(value);
        }
    }
    void pop() {
        if(stack1.top() == stack2.top()){
            stack2.pop();
        }
        stack1.pop();
    }
    int top() {
        return stack1.top();
    }
    int min() {
        return stack2.top();
    }
};
发布了36 篇原创文章 · 获赞 183 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章