【Python3_进阶系列_007】Python3-Stack实现
一、Stack
栈是一种常见的数据结构,具有先进后出的特性。一些面试题会要求一个Stack类,并且实现常见的方法:push,pop,peek,find,empty,full,length等
下面是通过list模拟实现栈。
### 使用list实现栈的数据接口,先进后出##### ### Stack的几大方法:push,pop,peek,find,empty,full,length,reverse,__str__ import copy class Stack(): def __init__(self,len): ##初始化函数,参数是指定stack的长度,用list data[]存储数据 self.len = len self.data = [] def push(self,var): ## 1.入栈操作:判断当前栈的长度是否满,不满则直接append到data中;满了提示错误。 if len(self.data)<self.len: self.data.append(var) print("Pushed in") return True else: print("Stack Full,Data not pushed in") return False def pop(self): ##2:出站操作:直接调用list的pop()方法 return self.data.pop() def peek(self): ##3.返回栈顶元素:直接返回列表的最后一个元素 return self.data[-1] def empty(self): ##4.判空:直接判断data是否为空 return bool(self.data) def full(self): ##5.判满:直接对比实际长度与定义的栈长度是否一致 return len(self.data)==self.len def find(self,var): ##6.查找元素的index:直接调用index方法,返回索引。 try: return self.data.index(var) except ValueError: return -1 def length(self): ## 7.长度:直接len函数返回 return len(self.data) def reverse(self): ## 8.栈反转:通过copy一个新的栈,然后依次入栈并返回 data = copy.copy(self.data) data.reverse() stack = Stack(len(data)) for i in data: stack.push(i) return stack def __str__(self): ##9.定义__str__方法,print函数 return str(self.data) if __name__ == '__main__': stack = Stack(5) # print(stack.empty()) stack.push(1) stack.push(2) stack.push(1) stack.push(3) stack.push(4) stack.push(5) print(stack) print(stack.reverse()) print(stack) # print(stack.full()) # print(stack.peek()) # print(stack.find(1)) # print(stack.pop()) # print(stack.pop()) # print(stack.peek())

浙公网安备 33010602011771号