栈的特点:后进先出(LIFO)
队列的特点:先进先出(FIFO)
由两个特点比较可知要想用栈去模拟队列,需要两个栈共同配合即可完成。首先建立一个入栈队列,其次建立一个出栈队列。先把元素存入入栈队列,此时需要判断出栈队列是否为空;在出栈队列输出元素,此时需要判断入栈队列是否为空。
假如:入栈队列存入1,2,3,4,5则取出顺序为:5,4,3,2,1再将此存入出栈队列,再取出则为1,2,3,4,5。符合队列的特点存入1,2,3,4,5出队列也为1,2,3,4,5。
则为用栈模拟队列的输出。
下面为队列的基本结构图:
下面为栈和队列的结构图的对比区别:
从该图中我们可以看出栈每次都是对栈顶的元素进行输出,所以造成了后进先出。栈就像我们家里洗盘子然后将盘子摞起来每次使用的时候呢都是先取上面的进行使用,两者的比较过后则栈要想模拟队列就必须用两个栈。
下面为栈模拟队列的代码实现:
实现类:
测试类:
输出结果: