java 队列和栈的区别

栈和队列的区别

(1)数据插入删除
是一种特殊的线性表,他只能在一段进行插入和删除操作,就好像是一个井一样。进行数据插入和删除就类似于井口,称为栈定。而井也是有底部的,栈无法进行插入删除操作的这一端就被称为栈底。
栈中的数据好似往井里加水或抽水,加水永远是加的离井口最近的水,同样,抽水也是抽的离进口最近的水。这种特性也就是先进后出LIFO
加水的操作就是进栈/压栈/入栈,入的数据在栈的最顶端。
抽水的操作就是出栈,出的数据也在栈的顶端。
java 队列和栈的区别

队列 只允许在一端进行插入操作,另一端进行删除操作。就像是排队一样,只能从后面排队,在队列的前面处理业务。而先排队的人可以先进行业务处理,这也就是队列的先进先出FIFO原则
队列中的数据就是正在排队的人,入队列也就是加入排队,而加入的那一边称为队尾,出队列也就是业务处理完成,离开排队的地方,这一边则被称之为队头
java 队列和栈的区别

(2)遍历速度
由于栈先今后出,且只能在栈顶取出数据,而最先放入栈的数据最后才能被遍历到的特性,栈在遍历时一般需要另外开辟空间来保证数据在遍历时不会被打乱。
队列 队列能基于地址指针进行遍历,而且可以从队头/队尾开始遍历(不能两边同时遍历),不需要另外开辟空间来保证数据的顺序,不影响数据结构,因此速度要更快。

(3)适用场景不同
具有记忆能力,使用于括号求解、表达式转换、函数递归和调用的实现、深度优先搜索遍历、浏览器后退功能等,需要记忆原来数据内容的场景。
队列可以进行有顺序的处理,如计算机系统中各种资源的管理、消息缓冲器的管理、广度优先搜索等场景。