我正在尝试使用堆栈实现平衡括号操作,其中程序检查什么是输入符号,如果它是开放的Kind((,{,[)则将其推入堆栈,如果符号是关闭类型,所以它检查最后插入的元素,如果它们是相同的继续删除机制。这是相同的代码。
class Stack(object):
def __init__(self,limit=10):
self.limit=limit
self.stack=limit*[]
def isEmpty(self):
if(len(self.stack))<=0:
print("Stack is Empty")
def peek(self):
if len(self.stack)<=0:
print("Stack is Empty")
else:
return(self.stack[-1])
def Delete(self):
if(len(self.stack)<=0):
print("Stack is empty.Cannot Delete it More")
else:
deleted_var=self.stack.pop()
#print('Deleted element is:',deleted_var)
def Insertion(self,item):
if(len(self.stack)>self.limit):
self.resize()
self.stack.append(item)
else:
inserted_var=self.stack.append(item)
#print("Element inserted is:",item)
def Size(self):
print(len(self.stack))
def Display(self):
print(self.stack[0:self.limit])
def resize(self):
old_stack=list(self.stack)
self.limit=2*self.limit
self.stack=old_stack
user_input=list(input())
BStack=Stack(len(user_input))
character=0
for character in range(len(user_input)):
Inserted_element=None
Deleted_elem=None
if user_input[character]=='(' or user_input[character]=='{' or user_input[character]=='[':
BStack.Insertion(user_input[character])
Inserted_element=user_input[character]
print(Inserted_element)
elif (user_input [character] ==')' or user_input[character]=='}' or user_input[character]==']') and BStack.isEmpty()!=True:
Deleted_elem=BStack.peek()
BStack.Delete()
print(Deleted_elem)
if BStack.Size()>2:
if Inserted_element!=Deleted_elem:
print("Symbos are not same")
if BStack.isEmpty():
print("Symbols Match")
else:
print("No Match")
我也在学习本书中的数据结构 - 数据结构和Python的算法思维,由Narasimha karumanchi撰写。如果有人读过它,我想听听你的意见,如果有人有更好的书,请告诉我。