Java 中队列与栈的区别是:1、数据插入删除;2、遍历速度;3、适用场景不同。栈是一种特殊的线性表,只能在一段进行插入和删除操作。进行数据插入和删除就类似于井口,称为栈定。井也有底部,栈无法进行插入删除操作的这一端就被称为栈底。
1、数据插入删除
栈是一种特殊的线性表,他只能在一段进行插入和删除操作,就好像是一个井一样。进行数据插入和删除就类似于井口,称为栈定。而井也是有底部的,栈无法进行插入删除操作的这一端就被称为栈底。
栈中的数据好似往井里加水或抽水,加水永远是加的离井口最近的水,同样,抽水也是抽的离进口最近的水。这种特性也就是先进后出LIFO。
加水的操作就是进栈/压栈/入栈,入的数据在栈的最顶端。抽水的操作就是出栈,出的数据也在栈的顶端。
队列只允许在一端进行插入操作,另一端进行删除操作。就像是排队一样,只能从后面排队,在队列的前面处理业务。而先排队的人可以先进行业务处理,这也就是队列的先进先出FIFO原则。
队列中的数据就是正在排队的人,入队列也就是加入排队,而加入的那一边称为队尾,出队列也就是业务处理完成,离开排队的地方,这一边则被称之为队头。
2、遍历速度
栈:由于栈先进后出,且只能在栈顶取出数据,而最先放入栈的数据最后才能被遍历到的特性,栈在遍历时一般需要另外开辟空间来保证数据在遍历时不会被打乱。
队列:队列能基于地址指针进行遍历,而且可以从队头/队尾开始遍历(不能两边同时遍历),不需要另外开辟空间来保证数据的顺序,不影响数据结构,因此速度要更快。
3、适用场景不同
栈具有记忆能力,使用于括号求解、表达式转换、函数递归和调用的实现、深度优先搜索遍历、浏览器后退功能等,需要记忆原来数据内容的场景。
队列可以进行有顺序的处理,如计算机系统中各种资源的管理、消息缓冲器的管理、广度优先搜索等场景。
延伸阅读:
什么是栈?
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被名列前茅个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(较好),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。
文章标题:Java 中队列与栈的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37375