zoukankan      html  css  js  c++  java
  • 代码实现-栈、队列、双端队列

    栈(Stack)

     1 - 特性:先进后出的数据结构 
     2 - 概念:一个元素的有序集合,添加和删除元素只发生在顶端,最先添加的元素会随着新的元素添加向后移动到底端。遵循特性,这种排序原则被称为LIFO
     3 - Stack():创建栈,不需要参数,返回一个空栈
     4 - push(item):将一个新添项添加到栈的顶部,需要item参数但不返回任何参数
     5 - pop():从栈的顶部开始删除项,不需要参数返回item(删除项),栈同时被修改
     6 - peek():仅返回栈的顶部项,不需要参数,不修改栈
     7 - jsEmpty():检测栈是否为空,不需要参数,返回布尔值
     8 - size():返回栈中项的数量(整数),不需要整数
     9 
    10 class Stack():
    11     def __init__(self):
    12         self.items = []
    13         
    14     def push(self, item):
    15         self.items.append(item)
    16         
    17     def pop(self):
    18         if not self.jsEmpty():
    19             return self.items.pop()
    20         
    21     def peek(self):
    22         return self.items[len(self.items) -1]
    23     
    24     def size(self):
    25         return len(self.items)
    26     
    27     def jsEmpty(self):
    28         return self.items == []

    队列(Queue)

     1 - 特性:先进先出
     2 - 概念:一个元素的有序集合,添加元素时从底端添加至顶端,删除时从顶端移除。遵循特性,这种排序原则被称为FIFO
     3 - Queue():创建新的队列,不需要参数,返回空的队列
     4 - enqueue(item):向队列中添加项
     5 - dequeue():从队首移除项,不需要参数返回移除的项,修改队列
     6 - isEmpty():查看队列是否为空,不需要参数,返回布尔值
     7 - size():返回队列中的项数(返回整数),不需要参数
     8 
     9 class Queue():
    10     def __init__(self):
    11         self.items = []
    12         
    13     def enqueue(self, item):
    14         return self.items.append(item)
    15     
    16     def dequeue(self):
    17         if not self.isEmpty():
    18             return self.items.pop()
    19     
    20     def isEmpty(self):
    21         return self.items == []
    22     
    23     def size(self):
    24         return len(self.items)
    25     
    队列

    双端队列(Deque)

     1 - 特性:添加和删除项是非限制性的,可从前后端添加和移除项。这种混合结线性构提供了单个数据结构中的栈和队列的所有功能
     2 - 概念:与队列类似项的有序集合。有首端和尾端两端,在集合中保持不变
     3 - Deque():创建新的deque,不需要参数,返回空的deque
     4 - addFront():将一个新的项添加到deque前端,需要参数,不返回任何内容
     5 - addRear():将一个新的项添加到deque后端,需要参数,不返回任何内容
     6 - removeFront():从deque前端删除一项,不需要参数,返回删除的项,修改deque
     7 - removeRear():从deque后端删除一项,不需要参数,返回删除的项,修改deque
     8 - isEmpty():判断deque是否为空,不需要参数,返回布尔值
     9 - size():测量deque中项的个数(返回整数),不需要参数
    10 
    11 class Deque():
    12     def __init__(self):
    13         self.items = []
    14         
    15     def addFront(self, item):
    16         return self.items.append(item)
    17     
    18     def addRear(self, item):
    19         return self.items.insert(0, item)
    20     
    21     def removeFront(self):
    22         if not self.isEmpty():
    23             return self.items.pop()
    24         
    25     def removeRear(self):
    26         if not self.isEmpty():
    27             return self.items.pop(0)
    28     
    29     def isEmpty(self):
    30         return self.items == []
    31     
    32     def size(self):
    33         return len(self.items)
    双端队列
  • 相关阅读:
    【vue】饿了么项目-goods商品列表页开发
    【vue】饿了么项目-header组件开发
    转转hybrid app web静态资源离线系统实践
    从列表到详情,没你想的那么简单
    浅谈Async/Await
    小程序代码包压缩 策略&方案
    微信小程序使用场景延伸:扫码登录、扫码支付
    这一次带你彻底了解Cookie
    常见函数错误引发的思考.
    触碰密码世界的大门
  • 原文地址:https://www.cnblogs.com/zhao-peng-/p/10931901.html
Copyright © 2011-2022 走看看