栈的定义
栈 ( stack )是限定仅在表的一端进行插入和删除操作的线性表,允许插入和删除的一端称
为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。
栈的示意图
因为栈只能够在一端进行插入和删除,所以栈具有 先进后出的特点,类似于碗的摆放拿取。
栈的头文件
#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 13s1.pop();//取栈顶元素13,这个时候栈中元素为50 5 cout << s1.top() << endl;//返回栈顶元素5(但不删除)
大小操作
1.s1.empty();
如果是空,返回1;如果不是空,返回0
2..s1.size();
返回栈的大小
例子:
//大小操作cout << s1.empty() << endl;//空返回1,不空返回0cout << 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;
}