一、栈
1.栈的定义
栈(Stack):是只允许在一端进行插入或删除的线性表,又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
栈顶(Top):线性表允许进行插入删除的那一端。
栈底(Bottom):固定的,不允许进行插入和删除的另一端。
空栈:不含任何元素的空表。
2.stack容器的声明
先打开模板库 #include<stack> ( 或直接用万能库#include<bits/stdc++.h> )
再声明:stack<TYPE>名称 TYPE 为stack中每个元素的类型
#include<stack>
stack<int>stk1;
stack<char>stk2;
stack<pair<int char>>stk3;
stack<NODE>stk4;
struct NODE{int x, char y};
事实上,stack是一种容器转换器模板,stack<Type, Container> (<数据类型,容器类型>)
初始化时必须要有数据类型,容器可省略,省略时则默认为deque类型
stack<Type, container> (<数据类型,容器类型>)
stack<char, list<char>>q;
//用list容器实现的stack
3.stack容器使用方法
stk.top() | 返回栈顶元素 |
stk.push(TYPE x) | 从栈顶加入一个元素 |
stk.pop() | 从栈顶弹出(删除)一个元素 |
stk.size() | 返回stack当前的长度大小 |
stk.empty() | 返回stack是否为空,1为空、0不为空 |
二、队列queue
1.队列的定义
队列(Queue):是只允许在一端进行插入,在另一端删除的线性表,又称为先进先出(First In First Out)的线性表,简称FIFO结构。
2.queue容器的声明
先打开模板库 #include<queue> ( 或直接用万能库#include<bits/stdc++.h> )
再声明:queue<TYPE>名称 TYPE 为queue中每个元素的类型 示例如下:
#include<queue>
queue<int>q1;
queue<char>q2;
queue<pair<int,int>>q3;
queue<node>q4;
struct node{...};
事实上,queue也是一种容器转换器模板,queue<Type, Container> (<数据类型,容器类型>)
初始化时必须要有数据类型,容器可省略,省略时则默认为deque类型
queue<Type, container> (<数据类型,容器类型>)
queue<char, list<char>>q;
//用list容器实现的queue
3.queue容器的使用方法
q.front() | 返回队首元素 |
q.back() | 返回队尾元素 |
q.push(TYPE x) | 从queue队尾加入一个元素 |
q.pop() | 从queue队首删除一个元素 |
q.size() | 返回queue当前的长度大小 |
q.empty() | 返回queue是否为空,1为空、0不为空 |