python实现数据结构-栈的实例讲解
程序员文章站
2023-09-29 15:16:07
栈(有时称为“后进先出栈”) 是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为&ldq...
栈(有时称为“后进先出栈”) 是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。
栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。
栈的例子很常见。几乎所有的自助餐厅都有一堆托盘或盘子,你从顶部拿一个,就会有一个新的托盘给下一个客人。想象桌上有一堆书, 只有顶部的那本书封面可见,要看到其他书的封面,只有先移除他们上面的书。Figure 2 展示了另一个栈,包含了很多 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
感受下这个感觉,没事自己多试试。
上一篇: 整合营销内容策划:给你你想要的