简易计算器之Stack应用

来源:互联网 发布:死神结局是什么 知乎 编辑:程序博客网 时间:2024/06/04 19:38

Stack简介

Stack,名为栈,是一种LIFO(Last In First Out)即后进先出的数据结构,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。

Stack常用API

push():在栈顶添加元素

peek():返回栈顶的元素,但是不删除栈顶元素

pop():和peek()一样返回栈顶元素,但是要将栈顶元素移除掉

empty():检查栈是否为空

search():返回元素在堆栈中的位置

计算器算法核心思路

这里仅以简单的四则运算来讲解思路。

  1. 使用2个栈,一个用来存数字,一个用来存运算符。
  2. 首先数字A入数字栈,运算符X入符号栈,然后数字B入数字栈。
  3. 接着判断现在的运算符Y与符号栈的第一个符号的运算优先级。如果不高于符号栈的第一个符号运算级就运算前面的2个数A和B,如果高于则该运算符继续入栈。
  4. 而后重复上面的过程。
  5. 最后在数字栈中的数字仅有一个,就是最终的计算结果。
  6. 如果要考虑到括号以及高级的科学运算整体思路也差不多,就是在运算优先级上多了几个层级以及括号的无条件压入符号栈。
0 0
原创粉丝点击