欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python实现数据结构-栈的实例讲解

程序员文章站 2023-09-29 15:16:07
栈(有时称为“后进先出栈”) 是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为&ldq...

栈(有时称为“后进先出栈”) 是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。

栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。

栈的例子很常见。几乎所有的自助餐厅都有一堆托盘或盘子,你从顶部拿一个,就会有一个新的托盘给下一个客人。想象桌上有一堆书, 只有顶部的那本书封面可见,要看到其他书的封面,只有先移除他们上面的书。Figure 2 展示了另一个栈,包含了很多 Python 对象。

自我理解,栈就像长筒状的薯片筒,只有一侧能开口,想吃下面的薯片必须先吃上面的薯片,同理先放进去的薯片是在最下的,最上面的是最后放的薯片,为了避免有人没吃过长筒状的薯片,贴图如下:

python实现数据结构-栈的实例讲解

下面来说说栈的几个方法:

Stack() 创建一个空的新栈。 它不需要参数,并返回一个空栈。#新建个薯片盒子push(item)将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。#拿一块定制薯片扔进薯片筒pop() 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。#吃点顶部的薯片peek() 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。#看一下顶部的薯片,不吃isEmpty() 测试栈是否为空。不需要参数,并返回布尔值。#看下薯片筒空了没size() 返回栈中的 item 数量。不需要参数,并返回一个整数。#数下有几块薯片

代码实现如下:

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

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

    def push(self,item):
        return 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)

s =Stack()
print s.isEmpty()
s.push(3)
s.push(4)
print s.pop()
s.peek()
print s.size()
输出:
True
4
1

感受下这个感觉,没事自己多试试。