- 定义
队列是先进先出(FIFO)的线性数据结构,元素从队尾入队,队头出队。
- 核心操作
• 入队(enqueue):在队尾添加元素,若队列满则抛出异常或进行扩容。
• 出队(dequeue):删除并返回队头元素,若队列为空则抛出异常。
• 判空(isEmpty):判断队列中是否存在元素。
• 查看队头(peek):返回队头元素但不删除。
• 查看大小(size):获取队列中元素的个数。
-
常见实现方式
-
数组实现(顺序队列)
◦ 用数组存储元素,维护队头指针front和队尾指针rear。
◦ 存在假溢出问题,可通过循环队列解决。
◦ 循环队列判满:(rear + 1) % capacity == front;判空:front == rear。
- 链表实现(链式队列)
◦ 用单链表存储元素,队头指向链表头节点,队尾指向链表尾节点。
◦ 入队、出队操作时间复杂度均为O(1),无需考虑扩容。
- 典型应用
• 任务排队(如打印机任务队列、线程池任务队列)
• 广度优先搜索(BFS)
• 消息队列系统