栈
堆和栈一样吗?
栈(stack)一般编译器自动分配释放
堆(heap)一般由程序员分配释放,或程序结束后OS释放
LIFO 后进先出
栈的实现
class Stack(object):
def __init__(self):
self.__list = []
def push(self, item):
self.__list.append(item)
def pop(self):
return self.__list.pop()
def peek(self):
if self.__list:
return self.__list[-1]
else:
return None
def is_empoty(self):
return self.__list == []
def size(self):
return len(self.__list)
if __name__ == '__main__':
s = Stack()
a = "({[({{abc}})][{1}]})2([]){({[]})}[]"
m = {')':'(',']':'[','}':'{'}
for i in a:
if i in '([{':
s.push(i)
elif i in m:
if m[i] != s.pop():
print("fail")
break
else:
print("ok")