美文网首页
数据结构 01 栈

数据结构 01 栈

作者: 极光火狐狸 | 来源:发表于2017-10-13 19:20 被阅读32次

后进先出(LIFO: Last In First Out)

# -.- coding:utf-8 -.-
from __future__ import print_function


def checker(func):

    def wrapper(self, *args, **kwargs):
        if self.empty():
            return self.items
        return func(self, *args, **kwargs)

    return wrapper


class Stack(object):

    """栈: 有序, 后进先出"""

    def __init__(self):
        self.items = []

    def size(self):
        """获取栈元素总数."""
        return len(self.items)

    def empty(self):
        """栈为空则返回: True ; 栈非空返回: False"""
        return not self.size()

    def append(self, item):
        """在栈的最末端增加一个元素."""
        self.items.append(item)
        return self.items

    @checker
    def peek(self):
        """在栈的最末端获取一个元素, 不做移除动作."""
        return self.items[-1]

    @checker
    def get(self):
        """在栈的最末端获取一个元素, 并移除该元素."""
        return self.items.pop()

    def __iter__(self):
        """让栈支持迭代"""
        return self

    def __next__(self):
        """Python3: 让栈支持for循环"""
        if not self.empty():
            return self.get()
        raise StopIteration

    def next(self):
        """Python2: 让栈支持for循环"""
        return self.__next__()

    def __str__(self):
        """让栈支持print打印结果"""
        return "{}".format(self.items)


if __name__ == '__main__':
    # 创建一个栈对象.
    stack = Stack()

    # 为栈对象增加几个元素
    stack.append('a')
    stack.append('b')
    stack.append('c')
    stack.append('d')
    stack.append('e')

    # 查看栈对象
    print("查看栈对象: ", stack)

    # 获取栈对象的一个元素
    print("获取栈对象的一个元素: ", stack.get())

    # 查看栈对象
    print("查看栈对象: ", stack)

    # 遍历栈对象
    for enum, i in enumerate(stack):
        print("遍历第{}个元素: ".format(enum), i)

    # 输出结果
    # 查看栈对象:  ['a', 'b', 'c', 'd', 'e']
    # 获取栈对象的一个元素:  e
    # 查看栈对象:  ['a', 'b', 'c', 'd']
    # 遍历第0个元素:  d
    # 遍历第1个元素:  c
    # 遍历第2个元素:  b
    # 遍历第3个元素:  a

相关文章

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • 数据结构 01 栈

    栈 后进先出(LIFO: Last In First Out)

  • java高级知识点

    1.数据结构 程序=数据结构+算法 栈:后进先出,线性结构 入栈:push 出栈:pop假如已知入栈顺序是ab...

  • 栈和堆以及栈区和堆区的区别

    栈和堆以及栈区和堆区的区别 数据结构中的栈和堆 栈:具有先进后出性质的数据结构 堆:一种经过排序的树形数据结构,节...

  • 数据结构与算法 第二节:栈 栈: 一种先进后出的数据结构。可以想象成手枪的弹夹。 栈的特点: 栈的行为: 栈的代...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 什么是堆栈?

    堆与栈是两种数据结构,并不是一种数据结构,堆是堆,栈是栈。 1、栈:是一种只能在一端进行插入和删除的数据结构。 允...

网友评论

      本文标题:数据结构 01 栈

      本文链接:https://www.haomeiwen.com/subject/ulhtuxtx.html