zoukankan      html  css  js  c++  java
  • 14_Python将列表作为栈和队列_Python编程之路

    上一篇文章跟大家介绍了列表的一些方法,这一节我们还是讲列表

    只是这一节我们要联系一些数据结构,来讲列表

    首先我们要理解一下栈是一种什么数据结构

    栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素

    通过下面一张图理解一下栈是怎么工作的

    简单来讲就是后进先出

    下面我们通过python列表的append()和pop()来简单实现栈的功能

    例如以下代码

    In [1]: stack = [2, 3, 4, 5]
    
    In [2]: stack.append(6)
    
    In [3]: stack.append(7)
    
    In [4]: stack
    Out[4]: [2, 3, 4, 5, 6, 7]
    
    In [5]: stack.pop()
    Out[5]: 7
    
    In [6]: stack
    Out[6]: [2, 3, 4, 5, 6]
    
    In [7]: stack.pop()
    Out[7]: 6
    
    In [8]: stack.pop()
    Out[8]: 5
    
    In [9]: stack
    Out[9]: [2, 3, 4]
    

      

    整体就是这样一个栈的结构,入栈与出栈,是按照后进先出的顺序进行的

    队列

     队列也是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

    简单来说就是先进先出的一种数据结构 

    使用列表实现队列的功能如果用collections包里面的deque方法会更好

    下面是队列的代码演示

    In [1]: from collections import deque
    
    In [2]: queue = deque(["ayesup", "jack", "Tom"])
    
    In [3]: queue.append("susmote")
    
    In [4]: queue.append("eric")
    
    In [5]: queue.popleft()
    Out[5]: 'ayesup'
    
    In [6]: queue.popleft()
    Out[6]: 'jack'
    
    In [7]: queue
    Out[7]: deque(['Tom', 'susmote', 'eric'])
    

    开始先导包,然后使用deque生成一个队列形式的列表,然后使用列表的方法简单实现一个先入先出的功能

    关于stack和队列就讲到这里,后面可能还会有涉及这部分的知识

    官方博客 www.susmote.com

  • 相关阅读:
    Apache 虚拟主机 VirtualHost 配置
    EAX、ECX、EDX、EBX寄存器的作用
    Python中文文档 目录(转载)
    八度
    POJ 3268 Silver Cow Party (最短路)
    POJ 2253 Frogger (求每条路径中最大值的最小值,Dijkstra变形)
    2013金山西山居创意游戏程序挑战赛——复赛(1) HDU 4557 非诚勿扰 HDU 4558 剑侠情缘 HDU 4559 涂色游戏 HDU 4560 我是歌手
    HDU 4549 M斐波那契数列(矩阵快速幂+欧拉定理)
    UVA 11624 Fire! (简单图论基础)
    HDU 3534 Tree (树形DP)
  • 原文地址:https://www.cnblogs.com/susmote/p/8934397.html
Copyright © 2011-2022 走看看