栈和队列
作者:互联网
栈和队列
栈 -stack
首先看看百度的解释:
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
由上述可以简述栈的特性:先进后出,后进先出,即限定仅在表尾进行插入和删除操作的线性表;栈有三种操作:入栈、出栈和询问栈顶元素。
举个例子,如果1,2,3,4,5按顺序入栈,根据栈的特性,最终栈顶元素为5,那如果删除栈顶元素5,则栈顶元素变为4,再加入6,栈顶元素又会变为6了。
队列 -queue
如果理解了栈,那么队列也更好理解了。
队列的特性为先进先出,其余与栈相似。
代码
C++中的STL实现了栈和队列这两种数据结构,直接用即可。(STL如果不知道可自行百度,这里不细讲。)
首先需要引入STL中栈和队列的头文件
#include<stack> // STL 中栈的头文件
#include<queue> // STL 中队列的头文件
创建栈和队列的对象
stack<int>sta; //创建一个栈的对象 stack<数据类型>名称
queue<int>que; //同理
相关操作
STL将这些操作封装成为函数了。
//sta
sta.push(x); //将元素x入栈
sta.pop(); //弹出栈顶
sta.top(); //询问栈顶元素
sta.size(); //询问栈中元素个数
sta.empty() //判断栈是否为空
//que
que.push(x); //将元素x压入队列
que.pop(); //弹出队首元素
que.front(); //询问队首元素
que.back(); //询问队尾元素
que.size(); //询问队列元素个数
que.empty() //判断队列是否为空
完整代码
#include<cstdio>
#include<stack> // STL 中栈的头文件
#include<queue> // STL 中队列的头文件
using namespace std; //使用名称空间std的函数
int main(void){
stack<int>sta;
queue<int>que;
for(int i = 1; i <= 5; ++i){
sta.push(i);
que.push(i);
}
while(!sta.empty()){
printf("%d ", sta.top());
sta.pop();
}
putchar('\n');
while(!que.empty()){
printf("%d ", que.front());
que.pop();
}
return 0;
}
栈输出:5 4 3 2 1
队列输出:1 2 3 4 5
标签:sta,队列,元素,栈顶,STL,que 来源: https://www.cnblogs.com/yanyeting/p/16306696.html