未完待续
栈:是限定仅在表尾进行插入和删除操作的线性表。
栈顶(允许插入和删除的一端)和栈底(在最底部)。
栈的结构特点是先进先出。(这种结构又叫Last in First out–LIFO)。
对于栈的插入操作,必须要有一个好听的名字,叫进栈、入栈或压栈。
对于栈的删除操作,也有一个好听的名字,有出栈、弹栈。
在栈的顺序存储结构中,为了更灵活地解决栈对于空间的利用,有一个骚操作,就是两个栈共享一个空间,两个栈的栈顶都在数组的两端,添加数据的时候向中间靠拢。
栈的应用——递归。
递归:每个递归定义要有一个条件,满足时递归不再进行,不然递归会一直执行下去,程序做死循环。
栈的另外一个应用——四则运算表达式
后缀(逆波兰)表示法定义:将运算表达式转化为一种不需要括号的表达式。
计算后缀表达式:遇到数字就进栈,遇到符号,就将处于栈顶两个数字出栈,进行运算,运算结果再进栈,一直到最终获得结果。
中缀表达式转后缀表达式:
规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,若是符号,判断与栈顶符号的优先级,是右括号或优先级不高于栈顶,则栈顶元素依次出栈并输出。
应用:遇到右括号时,一直输出到左括号为止。遇到符号,一直输出到优先级低于或等于的符号。
队列
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出(FIrst In First Out)的线性表,简称FIFO。
允许插入一端为队尾,允许删除的一端为队头。
循环队列:用front和rear来表示队头和队尾。
队列的链式存储结构。