美文网首页
栈&队列&堆&双端队列

栈&队列&堆&双端队列

作者: MononokeHime | 来源:发表于2018-10-05 14:11 被阅读0次

栈是一种后进先出的数据结构,我们可以借助list来实现栈

stack = []
stack.append(item1) # 入栈
stack.pop() # 出栈,返回结果是出栈元素
peak = stack[-1] # 返回栈顶元素

队列

队列是一种先进先出的数据结构,我们可以借助list来实现队列

queue = []
queue.append(item) # 入队
queue.pop(0) # 出队,返回结果是出队元素

  • 使用二叉树来表示堆
  • 二叉堆是一棵完全二叉树
  • 堆中某个节点的值总是不大于其父节点的值,称为最大堆

heapq模块提供了堆的实现,默认是最小堆。queue模块中的优先队列PriorityQueue就是基于heapq模块实现的

import heapq

heap = [] # 定义一个数组,元素是按照完全二叉树的结构存放在数组中的
heapq.heappush(heap,2)
heapq.heappush(heap,4)
heapq.heappush(heap,3)
print(heap)  # [2, 4, 3]
print(heapq.heappop(heap)) # 默认是最小堆,弹出最小元素
mylist = [4,2,6]
heapq.heapify(mylist) # 将数组转变成最小堆
print(mylist) # [2, 4, 6]

如何将最小堆转成最大堆呢?其实只用对元素取负,按照最小堆的方式存储,取出来的值只要再取负,就是最大值了。即push(e)改为push(-e)pop(e)-pop(e)

双端队列

双端队列(deque,全名double-endedqueue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。

Python中双端队列的操作函数;

  1. 先调用模块 :from collections import deque #首先从collections 模块中导入deque类
  2. 定义一个双端队列和操作
- A=deque() #创建一个空的双队列
- A.append(n) #从右边像队列中增加元素 ,n表示增加的元素
- A.appendleft(n) #从左边像队列中增加元素,n表示增加的元素
- A.clear() #清空队列
- A.count(n) #在队列中统计元素的个数,n表示统计的元素
- A.extend(n) #从右边扩展队列,n表示扩展的队列
- A.extendleft(n) #从左边扩展队列,n表示扩展的队列
- A.pop() #从队列的右边删除元素,并且返回删除值
- A.popleft() #从队列的左边删除元素,并且返回删除值
- A[0] # 获取队首元素(左边第一个)
- A[-1] # 获取队尾元素(右边第一个)

相关文章

  • 栈&队列&堆&双端队列

    栈 栈是一种后进先出的数据结构,我们可以借助list来实现栈 队列 队列是一种先进先出的数据结构,我们可以借助li...

  • 数据结构与算法之队列(五)

    目录 队列简介队列的接口设计用栈实现队列双端队列实现循环队列实现循环双端队列 一 简介 队列是一种特殊的线性表,只...

  • 4. 数据结构与算法:双端队列-

    双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构。双端队列也拥...

  • 栈 队列 双端队列 优先队列 基础知识

    栈 队列 双端队列 优先队列 基础知识• Stack:先入后出 first in last out 简写FILO ...

  • 7.双端队列Deque

    目录:1.双端队列的定义2.双端队列的图解3.双端队列定义操作4.双端队列的实现 1.双端队列的定义 2.双端队列...

  • 栈、队列、双端队列、优先队列

    Stack(栈) First in - Last out(先进后出) Last in - First out (后...

  • 栈、队列、双端队列、优先队列

    1.栈和队列 栈(stack):先入后出的容器。FILO(firstin last out)。添加、删除操作均为O...

  • 数据结构

    栈和队列 栈是先入后出,后入先出的结构。队列是先入先出排队,后入后出。 双端队列 DequeDeque (Doub...

  • 栈、队列和双端队列

    栈 栈是由一系列对象组成的一个集合,这些对象的插入和删除操作遵循后进先出的原则。用户可以在任何时刻向栈中插入一个对...

  • python之队列(deque模块)

    deque 位于 collections 包下,主要包含以下方法: 简单介绍一下栈、队列和双端队列 栈:只允许在一...

网友评论

      本文标题:栈&队列&堆&双端队列

      本文链接:https://www.haomeiwen.com/subject/hfdqaftx.html