栈是一种数据结构,遵循LIFO(last in first out)后进先出的原则。栈就像挤地铁一样,后上的人先出去。

栈有两种行为,一个是”压栈“——push(val)或emplace(val),既插入元素,可以理解为头插法;一个是”弹栈“,既删除顶部元素,可以理解为头删法。我们可以查看栈的元素大小size(),判断栈是否为空empty()以及同类型的栈相互交换swap()。

栈是一种很有趣的数据结构,具有对称的性质,读者可以试试去括号这题。下面我们通过代码来学习使用栈。

#include<iostream>
#include<stack>//头文件包含 
/*stack*/
using namespace std;
void test()
{
stack<int> s;
for(int i=0;i<5;++i) s.push(i+1);
cout << "弹栈遍历:"; 
while(!s.empty())
{
cout <<"栈定为:【"<<  s.top() << "】且有【" <<s.size()<< "】个元素\n";
s.pop();
}
}
int main(){
    test();
    return 0;
}

编译结果如下:

栈

栈这种数据结构常在蓝桥杯、ACM等算法竞赛上解决去括号、维护单调栈等问题。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)