栈
栈抽象数据类型由下面的结构和操作定义。如前所述,栈是元素的有序集合,添加操作与移
除操作都发生在其顶端。栈的操作顺序是 LIFO,它支持以下操作。
Stack()创建一个空栈。它不需要参数,且会返回一个空栈。
push(item)将一个元素添加到栈的顶端。它需要一个参数 item,且无返回值。
pop()将栈顶端的元素移除。它不需要参数,但会返回顶端的元素,并且修改栈的内容。
peek()返回栈顶端的元素,但是并不移除该元素。它不需要参数,也不会修改栈的内容。
isEmpty()检查栈是否为空。它不需要参数,且会返回一个布尔值。
size()返回栈中元素的数目。它不需要参数,且会返回一个整数。
s.isEmpty() [] True
s.push(4) [4]
s.push('dog') [4, 'dog']
s.peek() [4, 'dog'] 'dog'
s.push(True) [4, 'dog', True]
s.size() [4, 'dog', True] 3
s.isEmpty() [4, 'dog', True] False
s.push(8.4) [4, 'dog', True, 8.4]
s.pop() [4, 'dog', True] 8.4
s.pop() [4, 'dog'] True
s.size() [4, 'dog'] 2
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
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)
值得注意的是,也可以选择将列表的头部作为栈的顶端。不过在这种情况下,便无法直接使
用 pop 方法和 append 方法,而必须要用 pop 方法和 insert 方法显式地访问下标为 0 的元素,
即列表中的第 1 个元素。代码清单 3-2 展示了这种实现。
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.insert(0, item)
def pop(self):
return self.items.pop(0)
def peek(self):
return self.items[0]
def size(self):
return len(self.items)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76921.html