上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