掌握STL中stack和queue的用法(零基础/小白,全方面了解)

目录

1. stack的概念

2. stack的接口

2.1 构造函数(初始化)

2.2 赋值

2.3 存取操作 

2.4 大小操作

3. queue的概念

4. queue的接口

4.1 构造函数

4.2 赋值操作

4.3 存取操作

4.4 大小操作


        stack和queue接口函数很少,只要大家多敲一两遍,一定能熟练掌握的。所以大家要多熟悉stack和queue的概念,只要你熟悉了它们的概念,运用起来不是问题。

1. stack的概念

        栈(stack):是一种特殊的线性表,只允许固定的一端进行插入和删除操作。进行插入和删除的一端叫做栈顶,另一端叫做栈顶。栈中的数据元素遵守后进先出原则LIFO(Lats In Fast Out)。

        压栈:栈的插入操作,也叫入栈/进栈,压栈操作在栈顶进行的。

        出栈:栈的删除操作,也叫弹栈,出栈操作也是在栈底进行的。

        

        从上面这个图中可以看出来,数据元素从栈顶进入栈底,出数据时,先出栈顶的元素,只有栈顶元素出完,才能出栈底元素。

        生活中有很多案例,例如子弹入弹夹,当我们射击的时候,也是弹夹顶端的子弹先出。

        当然这里也只是简单的说一下什么是栈(stack),如果你对栈这个数据结构很感兴趣,有时间可以阅读下面这篇文章,用C语言模拟实现栈,帮助你更好理解使用STL中的stack。

数据结构入门————栈和队列(C语言/零基础/小白/新手+模拟实现+例题讲解)-CSDN博客

2. stack的接口

        下面的接口介绍,都是先展示函数原型,再展示应用代码。

2.1 构造函数(初始化)

stack<T> s;                        // 默认构造,采用模板类实现

stack<const stack& s>;        //拷贝构造函数

stack<int> s1;
 
stack<int> s2(s1);

2.2 赋值

stack& operator=(const stack& s);        //重载了运算符=

stack<int> s1;

stack<int> s2;
s2 = s1;

        这里为了方便理解,这里都是用int数据类型,也就是存放的数据都是int类型,当然也可以是别的内置数据类型,或者自定义的数据类型。

2.3 存取操作 

push(value);        //向栈顶添加元素

pop();        //删除栈顶元素

top();        //返回栈顶元素

2.4 大小操作

empty();        //判断栈是否为空

size();           //返回栈的大小

        这面的这些接口非常简单,相信阅读中文你也能熟练运用,所以我们就用一个小的例题,将这些接口全部运用一下,例如:打印9~0这10个数字

stack<int> s;

for(int i =0;<10;i++)
{
    s.push(i);
}


cout<<"size = "<<s.size()<<endl;    //打印一下元素个数

while(!s.empty())
{
    cout<<s.top();
    s.pop();
}

        当使用栈中数据时,必须出栈,这是这个数据结构的特性。

3. queue的概念

        队列(queue):也是一种特殊的线性表,要求只能一端进行插入操作,另一端进行删除操作,遵循先入先出原则FIFO(First In First Out)。

        入队列:进行插入的一端叫做队头。

        出队列:进行删除的一端叫队尾。

        这里同样简单介绍一下什么是队列,如果想要深入理解,模拟实现相关代码,可以阅读下面这篇文章:

数据结构入门————栈和队列(C语言/零基础/小白/新手+模拟实现+例题讲解)-CSDN博客

4. queue的接口

        这里我们同样先展示函数原型,在展示代码应用,最后运用例题:打印0~9这10个数字,运用所有接口。

4.1 构造函数

queue<T> que;        //默认构造

queue(const queue& que);        //拷贝构造

queue<int> q1;

queue<int> q2(q1);

4.2 赋值操作

queue& operator=()const queue& que)        //重载了等号操作符

queue<int> q1;

queue<int> q2;
q2 = q1;

4.3 存取操作

push(value);        //往队尾添加元素

pop();                  //在队头删除第一个元素

back();                //返回第一个元素

front();                //返回最后一个元素

4.4 大小操作

empty();        //判断栈是否为空

size();        //返回栈的大小

        这里我们就来用queue实现打印0~9的10个数字:

queue<int> q;

for(int i=0;i<10;i++)
{
    q.push(i);
}

if(q.empty)
{
    cout<<"插入失败";
}
else
{
    cout<<"插入成功";
}

cout<<"size = "<<q.size()<<endl;

while(!q.empty())
{
    cout<<q.front<<" ";
    q.pop();
}

  • 22
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼的滋味@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值