最最最最基础的数据结构·壹——栈

蒟蒻E兔砸近期打算刷一波复习

于是它开始写这篇博客……可能还有之后的贰弎肆...﹢

(如果再不复习恐怕以后模拟赛是要挂,鱼脑啥都记不住w

先从度娘的话开始

它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

说人话,其实就是一个[只有一个进出口的]车站,先进的车要最后出。比较装x的说法是LIFO

LIFO_百度翻译

LIFO [ˈlaɪfəʊ] [ˈlaɪfo]
[词典] 后进先出;
[例句] The instructions PUSH and QUEUE correspond to LIFO and FIFO operations on the stack.
指令PUSH和QUEUE对应的是对栈的LIFO和FIFO操作。


下面是正题↓

一些基本操作:

#include<stack>//头文件
#include<iostream>
using namespace std;


stack<int>s;//定义栈


int main()
{
int x,y;
cin>>x>>y;
s.push(x);//入栈操作
s.push(y);
s.pop();//出栈弹出
cout<<s.size()<<endl;//长度
if(s.empty())cout<<2333<<endl;//是否为空
else
cout<<s.top()<<endl;//顶端元素
return 0;


下面是一个简单的应用,十进制转化二进制

#include<stack>
#include<iostream>
using namespace std;


stack<int>s;


int main()
{
int x;
cin>>x;
while(x>=1){
s.push(x%2);
x/=2;
}
while(!s.empty()){
cout<<s.top();
s.pop(); 
}
cout<<endl;
return 0;


不知道为啥插入不了代码,就这样吧

猜你喜欢

转载自blog.csdn.net/M_oisture/article/details/80346849