数据结构:队列与堆栈

队列堆栈都是一种数据的存储方式。

队列可以提供先进先出的顺序(FIFO)。它每一次移除的元素,都是你最先放进去的元素。这里有一个非常类似的数据结构,堆栈Stack,属于后进先出的顺序(LIFO,Last in,Last out)。

一、队列

1.1 队列的主要方法

enqueue入队,在最顶层加入数据。

dequeue出队,将最旧的数据从队列中移除

1.2 队列使用场景

队列的最主要用途是异步任务,异步的思路主要用来缓解瞬间压力。

若系统每秒处理能力是100请求,而最高峰值可能达到每秒1000请求,若不采用队列,很有可能会出现服务不可用或者长时间等待。此时可以用队列将未能成功执行的请求放入队列,顺序执行,直到所有请求都被处理。

之前有一篇gevent:异步理论与实战文中gevent异步有一段代码,其实应用的就是队列数据结构的特性。

1.3 队列代码实现

二、堆栈

stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。

2.1 stack的主要方法:

push:在最顶层加入数据。

pop:返回并移除最顶层的数据。

2.2 什么时候用到栈

需要保存之前的状态

状态涉及先后顺序

这里引用知乎周毅刚举的例子,

首先你打开app,是一个问题列表,之后你点击一个问题,进入了相应的界面,之后你点击评论,进入了评论页面。

好了,现在你想返回主界面怎么办呢?按两下返回键吧,第一次回到问题详情,第二次回到主界面。 这时候你就发现了,这些界面的储存结构可以说是一个栈结构,你想回到主界面(位于栈底),必须经历两次弹栈把前面两个界面移除。

2.3 堆栈代码实现

代码很简单,客官一看就懂!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180117G00RV600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券