Python算法详解
上QQ阅读APP看书,第一时间看更新

4.4.4 实践演练——实现顺序栈操作

下面的实例文件shunxu.py演示了实现顺序栈基本操作的过程。

源码路径:daima\第4章\shunxu.py

class Stack(object):
     # 初始化栈为空列表
     def __init__(self):
          self.items = []
     # 判断栈是否为空,返回布尔值
     def is_empty(self):
          return self.items == []
     # 返回栈顶元素
     def peek(self):
          return self.items[len(self.items) - 1]
     # 返回栈的大小
     def size(self):
          return len(self.items)
     # 把新的元素堆进栈里面(程序员喜欢把这个过程叫作压栈、入栈、进栈……)
     def push(self, item):
          self.items.append(item)
     # 把栈顶元素弹出去(程序员喜欢把这个过程叫作出栈……)
     def pop(self, item):
          return self.items.pop()
if __name__=="__main__":
     # 初始化一个栈对象
     my_stack = Stack()
     # 把'h'压入栈里
     my_stack.push('h')
     # 把'a'压入栈里
     my_stack.push('a')
     my_stack.push('c')
     my_stack.push('d')
     my_stack.push('e')
     # 看一下栈的大小(有几个元素)
     print(my_stack.size())
     # 打印栈顶元素
     print(my_stack.peek())
     # 把栈顶元素弹出去,并打印出来
     #print(my_stack.pop())
     # 再看一下栈顶元素是谁
     print(my_stack.peek())
     # 这时候栈的大小是多少?
     print(my_stack.size())
     # 再弹出一个栈顶元素
     #print(my_stack.pop())
     # 看一下栈的大小
     print(my_stack.size)
     # 栈是不是空了?
     print(my_stack.is_empty())

执行后会输出:

5
e
e
5
<bound method Stack.size of <__main__.Stack object at 0x000001CFD9410080>>
False