IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 栈基础源码-python数据结构 -> 正文阅读

[Python知识库]栈基础源码-python数据结构

# -*- coding: utf-8 -*-

# @File    : data_structure.py
# @Date    : 2021-08-11-9:10
# @Author  : love_in_fall

# @文件修改历史
# >> 编辑时间
# >> 修改内容
class Stack(object):
    '''
    model:栈的功能:先进先出FIFO,后进先出LIFO.
    StackLong:当等于0时,意思是不指定栈的长度
    关于栈生长方向:栈统一向上生长.最新的元素永远是位于第 0的位置
    关于栈的大小:当栈的长度大于设定长度时,就会将之前的数据按顺序移出去,
                该项不受 model 参数影响。
    '''
    def __init__(self,model: str='FIFO',StackLong: int=0):
        self.items = []
        self.model = model
        self.StackLong = StackLong

    def isEmpty(self):
        return self.items == []

    def push(self, item):      # 将一个新项添加到栈的顶部      [栈被修改]
        self.items.insert(0,item)
        if not self.StackLong == 0:
            self.items = self.items[:self.StackLong]


    def pop(self):              # 返回栈顶 顶部项,并且要删除它  [栈被修改]
        if self.model=='FIFO':  # 先进先弹出
           return self.items.pop()

        elif self.model=='LIFO':# 后进先出
            self.items.reverse()
            value_pop = self.items.pop()
            self.items.reverse()
            return value_pop

    def peek(self):           # 返回栈顶 顶部项,但不会删除它   [栈不会被修改]
        if self.model == 'FIFO':
           return self.items[len(self.items) - 1]
        elif self.model == 'LIFO':  # 后进先出
           return self.items[0]

    def size(self):
        return len(self.items)


if __name__ == '__main__':
    stack_1 = Stack(model='FIFO',StackLong=4)
    stack_1.push('xx')
    stack_1.push('52')
    stack_1.push([12, 32])
    stack_1.push(99)
    print('01:',stack_1.items)
    stack_1.push(999)
    print('02:',stack_1.items)

    print('栈顶1',stack_1.peek()) # 返回栈顶的项
    print('03',stack_1.items)

    print('栈顶2',stack_1.pop())  # 弹出顶项
    print('04',stack_1.items)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:42:01  更:2021-08-16 11:44:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:20:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码