栈(FILO)
- 栈(stack)是限定仅在表尾进行插入和删除操作的线性表
- 下标为0的地方为栈底(固定),栈顶是一个指示栈顶元素在数组中的位置的变量top(类似与游标卡尺的游标),当栈存在一个元素时,
top=0
;空栈时,top=-1
;添加元素进栈,则top值+1
;元素出栈,则top值-1
;top的最大值不能超过栈的大小
线性栈
特点
- 栈顶进,放入栈底,然后从栈顶出。
- 后进先出
链栈
- 链表实现
应用
-
递归
- 把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称做递归函数 。
-
四则运算表达式求值
- 中缀表达式转化为后缀表达式(栈用来进出运算的符号)
- 将后缀表达式进行运算结果(栈用来进出运算的数字)
-
递归与迭代区别
- 选代和递归 的区别是:迭代使用 的 是循环结构,递归使用的是选择结构。递归能使程序 的 结构更清晰 、更简洁、更容易 让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的 副本,会耗费大量的时间和内存。选代则不需要反复调用函数和占用额外的内存。因此我们应该视不同情况选择不同的代码实现方式。
队列(FIFO)
- 队列( queue ) 是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
线性队列特点
-
队头:下标为0的地方,用于出对列,出队列,则后面所有元素向前移(缺点 )
-
待续