栈的定义
class Stack:
def __init__(self
):
self
.items
= []
def isEmpty(self
):
return self
.items
== []
def push(self
, item
):
self
.items
.append
(item
)
def peek(self
):
return self
.items
[len(self
.items
)-1]
def size(self
):
return len(self
.items
)
def pop(self
):
return self
.items
.pop
()
def __str__(self
):
return str(self
.items
)
a
= Stack
()
print(a
.isEmpty
())
a
.push
(4)
a
.push
('dog')
print(a
.peek
())
print(a
.size
())
a
.push
(True)
a
.push
(3.14)
print(a
)
a
.pop
()
print(a
)
a
.pop
()
print(a
)
栈的应用(1)————后缀表达式的计算
代码
class Stack:
def __init__(self
):
self
.items
= []
def isEmpty(self
):
return self
.items
== []
def push(self
, item
):
self
.items
.append
(item
)
def peek(self
):
return self
.items
[len(self
.items
)-1]
def size(self
):
return len(self
.items
)
def pop(self
):
return self
.items
.pop
()
def __str__(self
):
return str(self
.items
)
def domath(op
, op1
, op2
):
if op
== '*':
return op1
* op2
elif op
== '+':
return op1
+ op2
elif op
== '-':
return op1
- op2
else:
return op1
/op2
def postfixeval(exp
):
operate
= Stack
()
token
= list(exp
)
for item
in token
:
if item
in '0123456789':
operate
.push
(int(item
))
else:
op2
= operate
.pop
()
op1
= operate
.pop
()
operate
.push
(domath
(item
, op1
, op2
))
return operate
.pop
()
if __name__
== "__main__":
print('后缀表达式‘78+32+/’的结果为:')
print(postfixeval
('78+32+/'))
计算结果如下图所示:
转载请注明原文地址:https://blackberry.8miu.com/read-35028.html