一、队列结构1、基础概念队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表 。进行插入操作的端称为队尾,进行删除操作的端称为队头 。
2、特点描述队列是一个有序列表,可以用数组或是链表来实现,遵循先进先出的原则 。即:先进入队列的数据,会先取出;后进入队列的数据,要后取出;即FIFO原则 。
入队列示意图:
文章插图
出队列示意图:
文章插图
通过上述两张图解,不难发现队列结构的一些特点:
- 先进入的数据先出去;
- 数据从队尾进入,从队首出去;
- 基于数组描述队列下标变更频繁;
- 出队列算法可以基于容器大小取模;
3、消息队列消息队列就是基于数据结构中的“先进先出”策略实现的,将消息以排队的方式放入队列中,然后出队列被消费:
文章插图
有时候某类消息消费需要有顺序控制,即可以对消息中的公共ID做取模处理,即把某类消息都置于一个队列中即可 。
4、API使用案例LinkedList类实现Queue队列接口,因此可以基于LinkedList模拟队列效果 。
import JAVA.util.LinkedList;import java.util.Queue;public class M01_Queue {public static void main(String[] args) {// 入队列Queue<String> queue = new LinkedList<>();queue.add("head") ;queue.add("middle") ;queue.add("tail") ;// 当队列出数据之后,size是不断变化的int queueSize = queue.size() ;int loop = 0 ;// 根据队列大小,不断出队列while (loop < queueSize) {System.out.println(queue.poll());System.out.println(queue);loop ++ ;}}}
二、栈结构1、基础概念栈(stack)又名堆栈,它是一种运算受限的线性表 。限定仅在表尾进行插入和删除操作的线性表 。这一端被称为栈顶,相对地,把另一端称为栈底 。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素 。2、特点描述栈是一个先入后出的有序列表,添加和删除只能在栈顶端(Top)操作,另一端为固定的一端,称为栈底(Bottom) 。
入栈示意图:
文章插图
出栈示意图:
文章插图
通过上述两张图解,栈结构的一些特点如下:
- 进栈出栈都要通过栈顶端操作;
- 进出栈都不移动栈底指针;
- 进出栈都要移动栈顶指针;
3、递归应用栈在Java编程中的常见应用,(1)子程序的调用:在跳往子程序前,会将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,退回到原来的程序中;(2)处理递归调用:和子程序的调用类似,除了存储下一个指令的地址外,也要将参数、区域变量等数据存入堆栈中 。
4、API使用案例Stack栈API是Vector的一个子类,它实现了一个标准的后进先出的栈,堆栈只定义了默认构造函数,用来创建一个空栈,堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法 。
import java.util.Stack;public class M02_Stack {public static void main(String[] args) {// 入堆栈Stack<String> stack = new Stack<>() ;stack.push("First") ;stack.push("Second") ;stack.push("Third") ;int stackSize = stack.size() ;int loop = 0 ;// 根据栈大小,不断出栈while (loop < stackSize) {System.out.println(stack.pop());System.out.println(stack);loop ++ ;}}}
【结构与算法:队列和栈结构】
推荐阅读
- 康熙王朝人物关系结构 康熙王朝人物解析
- 在Linux中使用Bashtop与Bpytop监管系统资源
- 浅谈postman和jmeter的用法与区别
- 小米智能手表怎么与手机配对
- 喝铁观音的好处与功效,西湖龙井的功效与作用
- 喝绿杨春的禁忌,胖大海的禁忌与作用
- 黑茶十大功效与作用,笑堂六安瓜片的功效作用
- 魔兽世界|12年后的巫妖王与怀旧服 还能“亡者归来”吗?
- 老树茶的功效与作用,大麦茶的功效与作用
- 三国中王平是怎样的人? 王平与谁不和,来投刘备