python函数栈 python3 栈( 三 )


特点 。
堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的 。堆栈可以用数组存储,也可以用以后会介绍的链
表存储 。
堆栈就是这样一种数据结构 。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中 。
有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器 。开始放入数据的单元叫
做“栈底” 。数据一个一个地存入,这个过程叫做“压栈” 。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面
一个单元中,堆栈指示器中的地址自动加1 。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1 。这
个过程叫做“弹出pop” 。如此就实现python函数栈了后进先出的原则 。
推荐学习《python教程》 。
Python语言如何实现包含min函数的栈仅供参考
# coding=utf8
'''
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数 。
在该栈中,调用min、push及pop的时间复杂度都是O(1) 。
'''
class Stack():
def __init__(self):
self.main_stack = []
# 辅助栈,每次次最小的元素压入辅助栈
self.assist_stack = []
# 记录栈中的最小元素
self._min = None
def min(self):
return self._min
def push(self, data):
self.main_stack.append(data)
if self._min is None:
self._min = data
else:
if dataself._min:
self._min = data
# 将最小的元素压入辅助栈
self.assist_stack.append(self._min)
def pop(self):
if len(self.main_stack) == 0:
raise Exception('no data')
elif len(self.main_stack) == 1:
self.assist_stack.pop()
self._min = None
return self.main_stack.pop()
else:
self.assist_stack.pop()
self._min = self.assist_stack[-1]
return self.main_stack.pop()
if __name__ == '__main__':
s = Stack()
s.push(3)
s.push(4)
s.push(2)
s.push(1)
print s.min()
s.pop()
s.pop()
print s.min()
s.pop()
print s.min()
s.pop()
print s.min()
s.pop()
【python函数栈 python3 栈】关于python函数栈和python3 栈的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读