相信大家对栈跟队列的理解都比较清楚 栈好比我们小时候偷东西一样 叠罗汉 翻墙过去一样 战到上面的最先过去 (例子举的不太好)满足 后进先出的原则。 队列 使我们平时经
常看到的 排队买东西 看电影等等 慢走先进先出的原则。
为什么要使用栈跟队列呢?
当需要完成一些数组 比较难完成 或者数组执行效率不高的特殊的算法是 使用它们. 比如要执行操作运算符的匹配 计算一个算式的值等等 我们就首先应该考虑到使用栈
我们首先介绍下栈的用法把:
栈指允许访问一个数据项 即最后插入的数据项 移出这个数据项后才能访问下一个数据项 栈的实现原理其实很简单 其实就是定义一个为-1的变量 保存的时候 增加这个数组
取出的时候减少这个数字 通俗的将 的时候从小往大 增加 取出的时候 从数组下标大的开始执行 就完成了先进后出的原理 例如我们要计算(2+3)*5或者匹配其中的分割符{a[b(c)]} 的时候使用是 最合适的算法
队列的用法:可以模拟很多日常生活的情况 :春节排队买车票 网络上的数据传输等等
队列的实现的时候 必须要注意的一点就是 循环队列 因为有时候当你执行删除的时候 队列的首位置不一定就会是0的位置的 所以要执行队列回执
一般情况下 插入操作的队尾指针加一后 在队尾指针所指的位置处插入新的数据。但是当队尾指针指向数组的顶端 即maxSize-1的位置的时候 在插入数据项之前
他必须回绕到数组的底端 也就是回绕到队尾指针为-1的情况 因此当队尾指针加1后 他等于0 是数组底端的下标值 最好 nItetns加1
移出操作总是由front指针得到对头数据项的值 然后将front加1 但是 如果这样做使front的值 超过数组的顶端 front就必须回绕到数组下标为0的位置上。
队列操作需要注意这2点就行了