1、stack容器的基本概念
stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。 有元素推入栈的操作称为:push,将元素推出stack的操作称为pop。
2、stack容器特点
Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。 Stack不提供遍历功能,也不提供迭代器。
3、stack常用API
3.1stack构造函数
stack<T> stkT;//stack采用模板类实现, stack对象的默认构造形式:stack(const stack &stk);//拷贝构造函数
3.2stack赋值操作
stack& operator=(const stack &stk);//重载等号操作符
3.3stack数据存取操作
push(elem);//向栈顶添加元素 pop();//从栈顶移除第一个元素 top();//返回栈顶元素
3.4stack大小操作
empty();//判断堆栈是否为空 size();//返回堆栈的大小
案例:
#include <iostream>#include<stack>using namespace std;void test()
{
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
s.push(50);
if(s.empty())
{
cout<<"空栈"<<endl;
}
else
{
cout<<"栈的元素个数:"<<s.size()<<endl;
while(!s.empty())//栈不为空 我就访问栈顶元素
{
cout<<s.top()<<" ";
s.pop();//出栈 一个数据
}
}
}int main(int argc, char *argv[]){
test();
return 0;}
4、其他应用场景
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。
比如: (1) “good good study day day up”-> “up day day study good good ”
案例:
#include<iostream>#include<stack>using namespace std;int main(){
string ss;
stack<string> sstack;
while(cin>>ss){
sstack.push(ss);
}
while(sstack.size()>1){
cout<<sstack.top()<<" ";
sstack.pop();
}
cout<<sstack.top()<<endl;
return 0;}
更多关于“物联网培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。