第三篇.

感觉队列和栈是必须的……所以决定加上这两个……

我发现我已经买域名买上隐了……今天又买了个.top……真是智障……

Queue(队列FIFO)和Statk(栈LIFO).

那么为什么要这两个一块讲呢?理由很简单,数据结构小班同志们都学了,基础原理都会了,这两个东西很像,无论是在操作上还是其他别的方面……

而这篇博客主要是详解STL中queue和statk的用法。

首先,回顾一下队列和栈:

  (1)     非STL的队列实现方法:

    用数组模拟一个队列,两个指针,分别指向队列的头和尾,入队++尾指针,队首出队++头指针;程序如下:

 int a[];
int tail=,head=;//tail:队尾指针,head:队首指针
/*队列尾进头出 FIFO(First In First Out)*/
void pop(){
head++;//头指针++,相当于弹出(删除)队首元素
}
void push(x){
tail++;
a[tail]=x;//在队尾添加元素
//a[tail++]=x;
}
int front(){
return a[head];//返回队首元素
}
int back(){
return a[tail];//返回队尾元素
}

其实这个样子,有可能因为头指针和尾指针超过了这个用来模拟队列的数组的大小,可能爆掉,所以,读者自行加个判断就好了(其实还有如果队列为空了再pop就会出错了(都是使用者的事),一本通上写的很明白了)

  (2)     非STL的栈实现方法:

    用数组模拟一个栈,一个头指针,指向栈顶,入栈++头指针,出栈—头指针;程序如下:

 int a[];
int t=;//栈顶指针
/*栈顶进栈顶出(好像腔肠动物:D),LIFO(Last In First Out)*/
void push(int x){
t++; //栈顶指针++
a[t]=x;//放进栈顶元素
//a[t++]=x;
}
void pop(){
t--;//栈顶元素--,相当于删掉栈顶元素
}
void top(){
return a[t];//返回栈顶指针指向的元素(栈顶元素)
}

OK,回顾完之前学的,现在让我们来看一下STL中队列和栈是怎么实现的:

(一) 队列

  1.普通队列:

    (1) 首先,通常,头文件是不可少的: #include<queue>

#include<queue>
queue<int> que;

    (2) 定义完了,入队出队操作(还记的刚刚上面非STL方式的例程中的函数名嘛):

que.push(a);//将变量a放到队列que的队尾,a入队。
que.pop();//弹出队列que的队首元素(删掉队首元素),队首出队

怎么样?就两句话,简不简单?

    (3) 其他操作:

 que.front();//将会返回队列que的队首元素
que.back();//将会返回队列que的队尾元素
que.size();//返回队列que的大小(目前队列有多少元素)
que.empty();//如果队列为空,则返回1,不为空则返回0

是不是很方便?

  2.优先队列:(优先队列其实就是普通队列加了个排序。操作上是跟普通队列一样的,不过队列中的元素是有序的)

  3.双端队列:(普通队列是跟只能在某一端进行入队另一端进行出队操作的(也就是队首和队尾),而双端队列可在队列两段都可进行入队出队操作)

(二) 栈

  1.    同上,头文件: #include<stack>

  2.    同上,入栈出栈操作:

  3.    同上,其他操作:

Gengxin讲STL系列——Queue和Stack的更多相关文章

  1. Gengxin讲STL系列目录

    引言:有人催我写关于STL的博客#(滑稽)        STL嘛,昨晚有人一直逼问我STL名字的由来——STL = Standard Template Library,标准模板库,惠普实验室开发的一 ...

  2. Gengxin讲STL系列——Set

    本系列第二篇blog 第一篇写的心潮澎湃,结果写完一看,这都是些什么玩意= =| Set的中文名称是“集合”.集合,高一数学必修一课本给出的定义已经很明确了,简单来讲就是一个不含重复元素的空间(个人定 ...

  3. Gengxin讲STL系列——String

    衔接上一篇引导. 作为第一篇博客,就要大气一点. 可我好像并不知道怎么才能让自己的博客大气一点= =: 明天是我生日,自己先买个中文域名庆祝了一下…… 好了,废话说完了,结果博客也没大气到哪去……,正 ...

  4. Scala 深入浅出实战经典 第39讲:ListBuffer、ArrayBuffer、Queue、Stack操作代码实战

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  5. STL总结之queue, priority_queue, stack

    之所以把这三个容器放在一起,是因为他们都是容器适配器.   STL中queue就是我们常用的FIFO队列,实现是一个容器适配器,这种数据结构在网络中经常使用.   queue的模板声明: templa ...

  6. STL之queue&stack使用简介

       queue 队列也是一个线性存储表,与后进先出的堆栈不同,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出(First In First Out) 表.插入一端称为队尾,删除一 ...

  7. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  8. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  9. 数据结构与算法(4) -- list、queue以及stack

    今天主要给大家介绍几种数据结构,这几种数据结构在实现原理上较为类似,我习惯称之为类list的容器.具体有list.stack以及queue. list的节点Node 首先介绍下node,也就是组成li ...

随机推荐

  1. n!mod p的求法

    我们假设p为素数,n!=a*pe,则我们需要求解a mod p和e. e是n!能够迭代整除p的次数,因此可以使用下面式子计算: n/p+n/p2+n/p3…… 我们只需要对pt≤n的t进行计算所以复杂 ...

  2. 管理员权限dropfiles和copydata小时失败问题

    //处理低权限向高权限进程发消息的失败的问题 if(windows::version::instance()->IsVistaOrLater()) { typedef BOOL (WINAPI ...

  3. AIX下解决POWERHA的脑裂问题

    一.安装创建并发vg时必需的软件包clvm包,该包安装.升级.后必须重启os clvm包的描述:Enhanced Concurrent Logical Volume Manager 软件包在aix61 ...

  4. 帝国cms7.0整合百度编辑器ueditor教程

    帝国cms7.0整合百度编辑器ueditor教程开始 1.根据自己使用的帝国cms版本编码下载对应的ueditor版本 下载地址 http://ueditor.baidu.com/website/do ...

  5. Scala学习文档-各种使用模式的情况

    模式在变量定义中 在定义val或者var的时候,可以使用模式替代简单的标识符,如可以使用模式拆分元组,并把每个值分配给变量 val myTuple = (123,"abc") va ...

  6. TCP/IP他人笔记学习--地址收录

    <TCP/IP详解,卷1:协议>学习笔记——1. 概述   http://www.blogjava.net/amigoxie/archive/2007/08/22/138674.html ...

  7. Qt基于FFmpeg播放本地 H.264(H264)文件(灿哥哥的博客)

    最近在弄H264的硬件编解码,基于DM3730,但是为了调试方便,在小红帽上用FFmpeg实现了H264的软件编解码.现在弄了一个Windows的例子,给需要的同学参考一下,如果大家觉得有帮助,可以小 ...

  8. VS2010中使用QtOpenGL出现 unresolved external symbol __imp__glClear@4 referenced in function之类的错误

    描述: 链接了QtOpenGL4.lib QtOpend4.lib的库啊,居然还是发生此错误. 原因是没有链接OpenGL32.lib这个库.所以,要添加这个lib 重新rebuild的一下,此类的错 ...

  9. wapPush

    短信推送:wapPsuh简介

  10. c++ 02

    一.堆内存的动态分配与释放 malloc/calloc/realloc/free new/delete:详见memory.cpp 1.通过new运算符分配单个变量 数据类型* 指针变量 = new 数 ...