千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  物联网面试题  > STL教程(六):C++ STL常用容器之stack

STL教程(六):C++ STL常用容器之stack

来源:千锋教育
发布人:syq
时间: 2022-07-11 17:26:00 1657531560

  1、stack容器的基本概念

  stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。 有元素推入栈的操作称为:push,将元素推出stack的操作称为pop。

1

  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;}

2

 

  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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT