• Linear Structures-stacks, queues


    线性数据结构有两端:有左右、前后、顶底等叫法。

    栈(Stack):是一个项的有序集合。添加和移除项的操作都在同一端,该端通常被称作顶(top),另一端为底(base)。

    遵循后进先出(LIFO)原则,即越新的项越靠近顶,反之越靠近底。如叠起来的盘子,书,或浏览网页时(实际是指网址),打开第一个,二个,三个网页,当后退时,顺序是三,二,一。

    栈的操作:

    • Stack() creates a new stack that is empty. It needs no parameters(参数) and returns an empty stack.
    • push(item) adds a new item to the top of the stack. It needs the item and returns nothing.
    • pop() removes the top item from the stack. It needs no parameters and returns the item. The stack is modified(修改).
    • peek() returns the top item from the stack but does not remove it. It needs no parameters. The stack is not modified.
    • isEmpty() tests to see whether the stack is empty. It needs no parameters and returns a boolean value.
    • size() returns the number of items on the stack. It needs no parameters and returns an integer.

    python实现:

    class Stack:
         def __init__(self):
             self.items = []
    
         def isEmpty(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[len(self.items)-1]
    
         def size(self):
             return len(self.items)

    例:

          

    队列(Queue)是项的有序集合,新项在一端加入,该端为队尾(rear),已有项移除发生在另一端,该端为队首(front)。项从队尾进入队列后开始向队首前进,直至成为下一个要被移除的项。遵循先进先出原则(FIFO)或叫做先到先服务。如排队买饭,银行排队等服务,打字时键盘敲击信号被存储在类似队列的缓冲区中,最终以正确顺序显示在屏幕上。

    • Queue() 创建一个空队列,不需要参数并且返回一个空队列
    • enqueue(item) 添加一个新项到队列的rear,无返回值
    • dequeue() 从队列中移除队首项并返回该项,不需要参数,队列被修改
    • isEmpty() tests to see whether the queue is empty. It needs no parameters and returns a boolean value.
    • size() returns the number of items in the queue. It needs no parameters and returns an integer.

    python实现:

    class Queue:
        def __init__(self):
            self.items = []
    
        def isEmpty(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)

    例:

          

    渐变 --> 突变
  • 相关阅读:
    docker重启提示已存在一个容器的问题处理
    conda虚拟环境安装
    dell5460笔记本电脑ubuntu18.04系统音频驱动的安装和使用
    CentOS8的网络管理变化
    jupyter notebook 安装扩展nbextensions
    win10系统systeminfo命令的过滤用法
    《学习scrapy框架爬小说》的进一步完善
    记手机端 下拉加载新数据
    记 页面使用overflow-scroll在iOS上滑动卡顿的问题
    记 判断手机号运营商function
  • 原文地址:https://www.cnblogs.com/lybpy/p/7906821.html
Copyright © 2020-2023  润新知