python函数调用栈 python栈应用

Python数据结构-栈与深度优先搜索(Stack) 堆栈是算法和程序中最常用的辅助结构,其的应用十分广泛 。堆栈基本应用于两个方面:
整数除法仅保留整数部分 。
深度优先搜索算法(Depth First Search) :英文缩写为 DFS 。是一种用于遍历或搜索树或图的算法 。该算法沿着树的深度遍历树的节点,会尽可能深的搜索树的分支 。当节点 v 的所在边都己被探寻过,搜索将 回溯 到发现节点 v 的那条边的起始节点 。这一过程一直进行到已发现从源节点可达的所有节点为止 。如果还存在未被发现的节点 , 则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止 。
在深度优先遍历的过程中 , 我们需要 将当前遍历节点 v 的相邻节点暂时存储起来  , 以便于在回退的时候可以继续访问它们 。遍历到的节点顺序符合 「后进先出」 的特点,所以深度优先搜索可以通过 「递归」或者「堆栈」 来实现 。
给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克?。?。
图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node]) 。
输入:(((()
输出:False
要求判别 {{{{[[[((()))]]]}}}}
中缀表达式A + B; A + B * C; (A + B) * C
前缀表达式+ AB ; + A * BC ; * +ABC
后缀表达式AB + ; A B C * +; AB + C*
在中缀表达式中必须有的括号,在前缀和后缀表达式中消失了
思路
1 将中缀表达式转换为全括号的形式
2 将所有的操作符移动到子表达式所在的左括号(前缀)或者右括号(后缀)处,再删除其它所有的括号
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中的堆栈什么意思堆栈是一种执行“后进先出”算法的数据结构 。
设想有一个直径不大、一端开口一端封闭的竹筒 。有若干个写有编号的小球,小球的直径比竹筒的直径略小 。现在把不同编号的小球放到
竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来 。所以“先进后出”就是这种结构的
特点 。
堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的 。堆栈可以用数组存储 , 也可以用以后会介绍的链
表存储 。
堆栈就是这样一种数据结构 。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中 。

推荐阅读