队列的一种实现:循环队列
2020-06-01 01:23
239 查看
队列的一种实现,循环队列,通过使用固定长度数组及首尾指针实现队列的入队、出队等:
class CircularQueue<T> { private Object[] data; //数据存储数组 private int head; //队列头指针 private int tail; //队列尾指针 private int size; //队列长度 /** * 初始化 * * @param k */ public CircularQueue(int k) { data = new Object[k]; //数组初始化 head = -1; tail = -1; size = k; } /** * 元素入队,成功则返回true,否则false * * @param value * @return */ public boolean put(T value) { if (isFull() == true) { //入队,判断队满 return false; } if (isEmpty() == true) { //入队,队空,则head置0 head = 0; } tail = (tail + 1) % size; //循环队列,队尾循环移动,所以使用取余的方式移动队尾 data[tail] = value; //将入队元素放入队列 return true; } /** * 出队 * * @return */ public T remove() { T result = null; if (isEmpty() == true) { //出队、判断队空 return result; } if (head == tail) { //队首 队尾重合,则当前队列只剩唯一元素 result = (T) data[tail]; head = -1; tail = -1; return result; } result = (T) data[head]; data[head] = null; head = (head + 1) % size; return result; } /** * 获取队首元素 * * @return */ public T head() { if (isEmpty() == true) { return null; } return (T) data[head]; } /** * 获取队尾元素 * * @return */ public T tail() { if (isEmpty() == true) { return null; } return (T) data[tail]; } /** 对空判断 * * @return */ public boolean isEmpty() { return head == -1; } /** 对满判断 * * @return */ public boolean isFull() { return ((tail + 1) % size) == head; //尾指针再移动一位则与头指针重合 } public String toString(){ StringBuilder str = new StringBuilder(); for (Object datum : data) { if (datum != null) { str.append(datum); } } return str.toString(); } public static void main(String[] args) { CircularQueue queue = new CircularQueue<Integer>(5); queue.put(5); queue.put(3); queue.put(1); System.out.println(queue); System.out.println(queue.head()); System.out.println(queue.tail()); queue.remove(); System.out.println(queue); System.out.println(queue.head()); System.out.println(queue.tail()); } }
相关文章推荐
- 循环队列的一种实现模型
- 循环队列一种实现
- 数据结构与算法分析—循环队列的数组实现(C语言)
- php基于双向循环队列实现历史记录的前进后退等功能
- 数据结构学习之循环队列的另一种c++实现
- 数据结构中队列的实现(基于顺序表循环队列)
- 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)
- 顺序循环队列的实现(c语言)
- 循环队列及C语言实现<一>
- 循环数组实现队列(java)。
- 利用循环队列实现杨辉三角的打印
- Data Structure-2 Queue 循环队列,用数组实现
- 连续存储结构的循环队列实现
- 数据结构C语言实现之循环队列
- 数据结构:循环队列(C语言实现)
- 简单数据结构的实现之循环队列
- c++实现循环队列
- 循环队列的实现(C语言版)
- 循环队列的实现方法
- java实现循环队列