python 栈实现 加减乘除_数据结构与算法(六):基于栈实现简单的四则运算

栈,是一种操作受限的线性表,其操作规则为:后进者先出,先进者后出。

目录

题目需求:

给定一个字符串,形如“1+6*5/3-8”,根据其内容,计算结果,此例结果为3。

解题思路:

1、去除空格字符、在运算符两边添加空格、分割成list(形如:['1', '+', '6', '*', '5', '/', '3', '-', '8'])。

2、申请两个栈,分别用于存放数字、运算符。

3、从左到右每次读取s中的一个元素:

3.1、如果是数字,则转化为整形压入数字栈;

3.2、如果是运算符,则与当前运算符栈顶元素比较,优先级大于栈顶元素则入栈;

3.3、优先级小于等于当前栈顶元素,则:

3.3.1、取出两个数字,与当前栈顶元素进行运算,结果压入数字栈,

3.3.2、重复此过程,直到清空当前运算符栈;

3.4、然后,将当前运算符压入运算符栈。

4、对最终的两个栈,进行提取元素并计算得出最终结果。

一、定义一个栈

class Stack(object):

def __init__(self, max_length = 100):

self._max_length = max_length

self._stack = []<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值