数据结构与算法系列(1)————线性结构栈

    科技2024-12-02  53

    栈的定义

    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+/'))

    计算结果如下图所示:

    Processed: 0.010, SQL: 8