大话数据结构之栈和队列

栈:栈是限定仅在表尾进行插入和删除操作的线性表

队列:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表

栈的插入操作,叫做进栈,也称压栈、入栈。类似子弹入弹夹

栈的删除操作,叫作出栈,也有的叫作弹栈。类似弹夹中的子弹弹出来。

进栈出栈变化形式:

    如果我们有三个整型数字元素1、2、3依次进栈会有哪些出栈次序呢?

  •     1.     1 、2 、3进,再3 、2、1出。出栈方式为321。
  •     2.     1进,1出,2进,2出,3进,3出。出栈次序为123。
  •     3.     1进,2进, 2出,1出,3进,3出。出栈次序为213。
  •     4.     1进,1出,2进,3进,3出,2出。出栈次序为132。
  •     5.     1进,2进,2出,3进,3出,1出。出栈次序为231。

栈的应用-四则运算表达式求职

    1.后缀(逆波兰)表示法定义。

        1.什么是中缀表达式。

            9+(3-1) *3+10÷2

        2.什么是后缀表达式。

            9 3 1 - 3 * + 10  2  / +

        3.那么后缀表达式如何由中缀 表达式转化而来呢?

            规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。

            1.初始化一个空栈,用来对符号进出栈使用。

            2.第一个字符是数字9,输出9,后面是符号‘+’,进栈。

            3.第三个字符是“(”,依然是符号,因其只是左括号,还未配对,故进栈。

            4.第四个字符是数字3,输出3,总表达式为9 3,接着是‘-’,进栈。

            5.接下来是数字1,输出,总表达式9 3 1,后面是符号“)”,此时我们需要去匹配此前的"(",所以栈顶依次出栈,并输出,直到“(”出栈为止,此时左括号上方只有"-",因此输出“-”,总表达式为9 3 1 -。

            6.接下来,详情请看《大话数据结构》第四章

猜你喜欢

转载自my.oschina.net/u/3298130/blog/1632931