1. Stack

  • FILO (FirstInLastOut) 的链表结构
  • 在程序编译环境上使用较多
  • 常用操作
    • push
    • pop
    • peek
    • is_empty
    • size
  • Python 代码示例
class Stack(object):
def __init__(self):
self.items = [] def is_empty(self):
return self.items == [] def push(self, item):
self.items.append(item) def pop(self):
return self.items.pop() def peek(self):
return self.items[-1] def size(self):
return len(self.items) if __name__ == "__main__":
stack = Stack()
print(stack.is_empty()) stack.push('a')
stack.push('b')
stack.push('c')
print(stack.size())
print(stack.peek())
print(stack.pop())
print(stack.pop())
print(stack.pop())

2. Queue

2.1 queue

  • FIFO (FirstInFastOut) 的链表结构
  • 处理消息的时候使用比较多
    • 生产者消费者模型
  • 常用操作
    • enqueue
    • dequeue
    • is_empty
    • size
  • Python 代码示例
class Queue(object):
def __init__(self):
self.items = [] def is_empty(self):
return self.items == [] def enqueue(self, item):
self.items.insert(0, item) def dequeue(self):
return self.items.pop() def size(self):
return len(self.items) if __name__ == "__main__":
queue = Queue()
print(queue.is_empty()) queue.enqueue('a')
queue.enqueue('b')
queue.enqueue('c')
print(queue.size())
print(queue.dequeue())
print(queue.dequeue())
print(queue.dequeue())

2.2 dequeue

  • dequeue = double-ended-queue
  • 队头队尾均可入队、出队
  • 常用操作
    • add_front
    • add_rear
    • remove_front
    • remove_rear
    • is_empty
    • size
  • Python 代码示例
class Deque(object):
def __init__(self):
self.items = [] def is_empty(self):
return self.items == [] def add_front(self, item):
self.items.insert(0, item) def add_rear(self, item):
self.items.append(item) def remove_front(self):
return self.items.pop(0) def remove_rear(self):
return self.items.pop() def size(self):
return len(self.items) if __name__ == "__main__":
deque = Deque() deque.add_front(2)
deque.add_front(1)
deque.add_rear(3)
deque.add_rear(4)
print(">>> size:", deque.size()) print(deque.remove_front())
print(deque.remove_front())
print(deque.remove_rear())
print(deque.remove_rear())
print(">>> size:", deque.size())

[DS+Algo] 004 栈、队列及其代码实现的更多相关文章

  1. [DS+Algo] 007 希尔排序及其代码实现

    步骤 将数组列在一个表(一行多列)中,按特定的步长进行插入排序 步长从 length/2 到 1,每次除 2 将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序 算法性能 (根据步长序 ...

  2. java面向对象的栈 队列 优先级队列的比较

    栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...

  3. C++实现一个简单的双栈队列

    双栈队列的原理是用两个栈结构模拟一个队列, 一个栈A模拟队尾, 入队的元素全部压入此栈, 另一个栈B模拟队首, 出队时将栈A的元素弹入栈B, 将栈B的栈顶元素弹出 此结构类似汉诺塔, 非常经典, 这里 ...

  4. Leetcode栈&队列

    Leetcode栈&队列 232.用栈实现队列 题干: 思路: 栈是FILO,队列是FIFO,所以如果要用栈实现队列,目的就是要栈实现一个FIFO的特性. 具体实现方法可以理解为,准备两个栈, ...

  5. java 集合 Connection 栈 队列 及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  6. Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  7. 详解JavaScript的任务、微任务、队列以及代码执行顺序

    摘要: 理解JS的执行顺序. 作者:前端小智 原文:详解JavaScript的任务.微任务.队列以及代码执行顺序 思考下面 JavaScript 代码: console.log("scrip ...

  8. [DS+Algo] 010 二叉树的遍历

    二叉树遍历 深度优先 一般用递归 一些名词 遍历方式 英文 先序 Preorder 中序 Inorder 后序 Postorder 广度优先 一般用队列 Python 代码示例 class Node( ...

  9. 栈&队列&并查集&哈希表(julyedu网课整理)

    date: 2018-11-25 08:31:30 updated: 2018-11-25 08:31:30 栈&队列&并查集&哈希表(julyedu网课整理) 栈和队列 1. ...

随机推荐

  1. iOS使用protobuf环境的配置

    配置protobuf需要HomeBrew工具或则是MacPort.如没有安装,则需要配置HomeBrew工具或则是MacPort. 步骤1(环境配置前的准备工作): 1:使用HomeBrew brew ...

  2. SpringCloud学习系列-Eureka服务注册与发现(2)

    构建 microservicecloud-eureka-7001 eureka服务注册中心Module 1.新建microservicecloud-eureka-7001 2.pom <proj ...

  3. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  4. PHP基础教程探讨一些php编程性能优化总结

      兄弟连PHP培训 小编最近在做php程序的性能优化,一些经过测试后发现的东西就先记录下来,以备后用. 首先对于一些反应慢的操作或页面要跟踪处理一下,可以使用webGrind的方式看一下主要问题出在 ...

  5. Android学习笔记之Menu的ShowAsAction属性的设置

    (1)在res--menu目录下的main.xml文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  6. 满减 HRBUST - 2455

    https://vjudge.net/problem/HRBUST-2455 有两种优惠方式,一是满400减100,另外一种是商品自带折扣,二者不可叠加 dp[i][j]表示前i种商品,(参与满400 ...

  7. 突破css选择器的局限,实现一个css地址选择器?

    首先看一个效果,注意地址栏的变化 然后思考一下,用css如何实现? css选择器的局限 选择器是css中的一大特色,用于选择需要添加样式的元素. 选择器的种类有很多,比如 元素选择器 p {color ...

  8. 关于SQL注入的问题以及解决方法

    1.关于SQL注入 什么是SQL注入: 由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻击方式就叫做 ...

  9. HDU4497 GCD and LCM(数论,质因子分解)

    HDU4497 GCD and LCM 如果 \(G \% L != 0\) ,那么输出 \(0\) . 否则我们有 \(L/G=(p_1^{r_1})\cdot(p_2^{r_2})\cdot(p_ ...

  10. 【转】UNITY中相机空间,投影空间的正向问题

    原文链接1:https://www.cnblogs.com/wantnon/p/4570188.html 原文链接2:https://www.cnblogs.com/hefee/p/3820610.h ...