一、栈
栈(Stack)是支持push和pop两种操作的数据结构。push是在栈的顶端放入一组数据的操作。反之,pop是从其顶端取出一组数据的操作。因此,最后进入栈的一组数据可以最先被取出(先进后出)。像是羽毛球筒里放入羽毛球和取出羽毛球的操作。
1.栈的两个相关函数
1)stack::pop 移除最近顶端的数据。
2)stack::top 访问最顶端的数据,(此操作通常也被称为 peek)。
2.栈的操作例子
#include<stack>
#include<cstdio>
using namespace std;
int main()
{
stack<int> s; // 声明存储int类型的数据栈
s.push(1); // {}->{1}
s.push(2); // {1}->{1,2}
s.push(3); // {1,2}->{1,2,3}
printf("%d\n",s.top()); // 3(访问最顶端数据)
s.pop(); // 移除最顶端数据 {1,2,3}->{1,2}
printf("%d\n",s.pop()); // 2
return 0;
}
二、队列
队列(Queue)与栈一样支持push和pop两个操作。但不同于栈的是,pop完成的不是取出最顶端的元素,而是取出最低端的元素。也就是说,最初放出的元素能够最先取出(先进先出)。见字知其意,排队就要有先来后到。像是火车进站出站一样。
1.队列的函数
1)queue::pop 移除最队列最前面的数据。
2)queue::front 访问队列最前面的数据。
2.队列的操作例子
#include<queue>
#include<cstdio>
using namespace std;
int main()
{
queue<int> que; // 声明存储int类型数据的队列
que.push(1); // {}->{1}
que.push(2); // {1}->{1,2}
que.push(3); // {1,2}->{1,2,3}
printf("%d\n",que.front()); // 1(访问最前面数据)
que.pop(); // 移除最先到的数据 {1,2,3}->{2,3}
printf("%d\n",que.front()); // 2
return 0;
}