代码如下:
class Minstack: #创建一个class类
def __init__(self): #定义一个self类
self.data = [] #创建一个data列表
self.min_stack = [] #创建一个最小值栈列表
def get_min(self):
return self.min_stack[len(self.min_stack) - 1] #返回最小栈的值的方法
def push(self,num): #定义入栈
self.data.append(num) #在data列表当中添加数据
if len(self.min_stack) == 0:#先判断微型栈是否为空栈
self.min_stack.append(num)#再往栈中添加数据
elif self.get_min()>num:#比较大小
self.min_stack.append(num)#判断该数字比原来的小入栈
else:
self.min_stack.append(self.get_min())#其余的都是判断数字的大小小的入栈
def pop(self): #定义出栈
if len(self.data) == 0: #先判断栈是否为空
raise StackEmptyError('Stack Empty!No Element Pop!')#若为空则输出Stack Empty!No Element Pop!
self.min_stack.pop()#从小开始出栈
return self.data.pop()
def top(self):#定义栈顶元素
if len(self.data) > 0:#判断栈顶是否为空
return self.data[len(self.data)-1]#元素出栈
raise StackEmptyError('Stack Empty!')
class StackEmptyError(Exception):#定义一个空栈的类
def __init__(self,value):
self.value = value
def __str__(self):
return repr(self.value)
#主代码
if __name__ == '__main__':
min_stack = Minstack()
min_stack.push(-2)
min_stack.push(0)
min_stack.push(-3)
print(min_stack.get_min())
min_stack.pop()
print(min_stack.get_min())
执行结果为:
这个代码是老师给的目前为止还没有对其理解透彻有好多地方都不是很清楚,如果有前辈看到的话也可以指教一下,谢谢。