栈的定义
栈
(
stack
)是限定仅在表的一端进行插入和删除操作的线性表,允许插入和删除的一端称
为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。
![](https://i-blog.csdnimg.cn/direct/a8adb03a3b9b420c8fdb05db8d35e6e3.png)
因为栈只能够在一端进行插入和删除,所以栈具有
先进后出的特点,类似于碗的摆放拿取。
栈的头文件
#include<stack>
栈的声明:stack<数据类型>变量名;
stack<int>s1 ;//默认的构造函数
stack<int>s2(s1);//拷贝构造函数
stack<int>s3 = s1;//赋值
数据的存取
1.s1.push(element);
向栈顶添加元素
2.s1.pop;
取栈顶元素
3.s1.top();
返回栈顶元素,注意这里只是返回值,但并不删除
例子:
s1.push(50);//向栈顶添加元素
s1.push(5);
s1.push(13);//这个时候栈中元素为50 5 13
s1.pop();//取栈顶元素13,这个时候栈中元素为50 5
cout << s1.top() << endl;//返回栈顶元素5(但不删除)
大小操作
1.s1.empty();
如果是空,返回1;如果不是空,返回0
2..s1.size();
返回栈的大小
例子:
//大小操作
cout << s1.empty() << endl;//空返回1,不空返回0
cout << s1.size() << endl;
例题:十进制变成二进制
#include<iostream>
#include<stack>
using namespace std;
int main() {
//例题:十进制转化成二进制
stack<int>ans;
cout << "请输入一个十进制整数" << endl;
int n;
cin >> n ;
for (int i = n; i > 0;i=i/2) {
ans.push(i %2);
}
while(ans.size()>0) {
cout<<ans.top()<<" ";
ans.pop();
}
return 0;
}