C++标准模板库--栈和队列

Stack 和 Queue

介绍

        LIFO stack(后进先出栈):栈是一种容器适配器,专门设计用于后进先出的后进先出环境,在这种环境中,元素只从容器的一端插入和提取。栈是作为容器适配器实现的,这些适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的“后面”(即堆栈的顶部)被推入/弹出。底层容器可以是任何标准容器类模板或其他特定设计的容器类。容器应支持以下操作:empty、size、back、push_back、pop_back。标准容器类vector、deque和list满足这些要求。默认情况下,如果没有为特定堆栈类实例化指定容器类,则使用标准容器队列。

        FIFO queue(先进先出队列):队列是一种容器适配器,专门设计用于在FIFO上下文中操作(先进先出),其中将元素插入容器的一端并从另一端提取。队列是作为容器适配器实现的,容器适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素被推入特定容器的“后面”,并从其“前面”弹出。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty、size、front、back、push_back、pop_front。标准容器类deque和list满足这些要求。默认情况下,如果没有为特定队列类实例化指定容器类,则使用标准容器队列。

         根据官方介绍可知,LIFO栈和FIFO队列分别是专为后进先出和先进先出环境设计的容器适配器,它们利用特定容器类作为底层容器,并提供特定的成员函数来访问元素,这些底层容器需支持一系列基本操作,且标准容器类如vector、deque和list可用于满足这些要求。

        C语言实现栈和队列:栈和队列

使用

stack:

函数名称 接口说明
stack() 构造空的栈
empty() 检测stack是否为空
size() 返回stack中元素的个数
top() 返回栈顶元素的引用
push() 将元素压入stack中
pop() 将stack中尾部的元素弹出

queue:

函数名称 接口说明
queue() 构造空的队列
empty() 检测queue是否为空
size() 返回queue中元素的个数
front() 返回队列头部的引用
back() 返回队列尾部的引用
push() 将元素压入queue中
pop() 将queue中头部的元素弹出

 OJ练习

 下面我们通过几道例题来演示栈和队列的使用:

1、最小栈:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack():初始化堆栈对象。
  • void push(int val): 将元素val推入堆栈。
  • void pop(): 删除堆栈顶部的元素。
  • int top() : 获取堆栈顶部的元素。
  • int getMin(): 获取堆栈中的最小元素。

提示:

  • -2^31 <= val <= 2^31 - 1
  • poptop 和 getMin 操作总是在 非空栈 上调用
  • pushpoptop, and getMin

你可能感兴趣的:(c++)