网站LOGO
公爵书房 | 技术分享
页面加载中
10月4日
网站LOGO 公爵书房 | 技术分享
以指键之轻,承载知识之重
菜单
  • 公爵书房 | 技术分享
    以指键之轻,承载知识之重
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Python数据结构(三)·栈
    点击复制本页地址
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    Python数据结构(三)·栈

    公爵 · 原创 ·
    笔记 · python数据结构
    共 2789 字 · 约 1 分钟 · 14
    本文最后更新于2023年09月02日,已经过了31天没有更新,若内容或图片失效,请留言反馈
    栈是一种数据结构,只能从一端插入和删除操作,遵循着先进后出原则存储数据。
    栈

    3.1 栈的初始化

    python 代码:
    def __init__(self):
        self.stack = []  # 栈列表
        self.size = 20  # 栈大小
        self.top = -1  # 栈顶位置

    3.2 元素进栈

    python 代码:
    # 元素进栈
    def push(self, element):
        self.stack.append(element)
        self.top += 1

    3.3 元素出栈

    python 代码:
    # 元素出栈
    def pop(self):
        element = self.stack[-1]
        self.top -= 1
        del self.stack[-1]
        return element

    这里可以直接调用pop函数,使用如下:

    python 代码:
    self.stack.pop() # 弹出栈顶元素

    3.4 获取栈顶元素

    python 代码:
    # 获取栈顶位置
    def getTop(self):
        return self.top

    这里也可以直接使用列表,使用如下:

    python 代码:
    self.stack[-1]

    3.5 清空栈

    python 代码:
    # 清空栈
    def empty(self):
        self.stack = []
        self.top = -1

    3.6 判断是否为空栈

    python 代码:
    # 判断是否为空栈
    def isEmpty(self):
        if self.top == -1:
            return True
        else:
            return False

    这里可以直接判断列表是否为空即可,使用如下:

    python 代码:
    return self.stack is []

    3.7 判断是否为满栈

    python 代码:
    # 是否为满栈
    def isFull(self):
        if self.top == self.size - 1:
            return True
        else:
            return False

    3.8 完整代码

    python 代码:
    #!usr/bin/env python
    # encoding:utf-8
    
    class Stack:
        def __init__(self):
            self.stack = []  # 栈列表
            self.size = 20  # 栈大小
            self.top = -1  # 栈顶位置
    
        # 元素进栈
        def push(self, element):
            if self.isFull():  # 如果栈满,引发异常
                raise StackException('Stack is full')
            else:
                self.stack.append(element)
                self.top += 1
    
        # 元素出栈
        def pop(self):
            if self.isEmpty():  # 如果栈为空,则引发异常
                raise StackException('Stack is empty')
            else:
                element = self.stack[-1]
                self.top -= 1
                del self.stack[-1]
                return element
    
        # 获取栈顶位置
        def getTop(self):
            return self.top
    
        # 清空栈
        def empty(self):
            self.stack = []
            self.top = -1
    
        # 判断是否为空栈
        def isEmpty(self):
            if self.top == -1:
                return True
            else:
                return False
    
        # 是否为满栈
        def isFull(self):
            if self.top == self.size - 1:
                return True
            else:
                return False
    
    
    class StackException(Exception):  # 自定义异常类
        def __init__(self, data):
            self.data = data
    
        def __str__(self):
            return self.data
    
    
    '''
    主函数
    '''
    if __name__ == '__main__':
        stack = Stack()  # 创建栈
        for i in range(10):
            stack.push(i)  # 元素进栈
        print('栈顶位置:', stack.getTop())
        while not stack.isEmpty():
            print(stack.pop())  # 元素出栈
    
        stack.empty()  # 清空栈
        for i in range(21):
            stack.push(i)  # 引发异常
    声明:本文由 公爵(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    发一条! 发一条!
    博客logo 公爵书房 | 技术分享 以指键之轻,承载知识之重 51统计 百度统计
    MOEICP 萌ICP备20226257号 ICP 赣ICP备2022001242号-1 ICP 闽公网安备35020502000606号 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 1 年 257 天 5 小时 36 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    公爵书房 | 技术分享. © 2022 ~ 2023.
    网站logo

    公爵书房 | 技术分享 以指键之轻,承载知识之重
     
     
     
     
    壁纸