栈与队列(数组模拟)

97 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

栈与队列(数组模拟)

先进后出,先插入的元素后被弹出。类似一个桶状。

#include <iostream>

using namespace std;

const int N = 100010;

//stk是栈,tt是栈顶下标,下标从0开始还是1开始看自己习惯 
int stk[N], tt; 

//栈顶加一个新元素
stk[++t] = x;

//删除,栈顶下标--
tt--; 

//判断是否为空
if(tt > 0) not empty
else empty

//取出栈顶
stk[tt];

队列

先进先出,先进的元素先出。类似排队。

image-20220223002455360

#include <iostream>

using namespace std;

const int N = 100010;

//hh表示队头,tt表示队尾,队尾插入,队头弹出 
int q[N], hh, tt = -1;

//插入元素
q[++tt] = x;

//弹出元素
hh++;
 
//判断是否为空
if(hh <= tt) not empty
else empty

//取出队头元素
q[hh];

STL

STL栈

stack是一种后进先出的容器结构,准确来说stack并不是容器,而是一种容器适配器(对特定类封装作为其底层的容器)。

容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。

常见接口

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

STL队列

队列是一种后进后出的容器适配器结构,标准容器类deque和list满足其要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque(双端队列)。

常见接口

函数说明接口说明
queue()构造空的队列
empty()判断队列是否为空
size()返回队列中元素的个数
front()返回队头元素
back()返回对尾元素
pop()将队头元素出队