数据结构-08 队列(循环队列)
2012-08-22 16:18
232 查看
1、主要代码数据结构-07 队列()代码:
2、完整代码:
3、测试:
4、运行结果:
/** * 添加数据,从队尾插入 */ public void insert(long value){ //当end指到队列结尾时,再调整指到初始位置 if(end == arr.length - 1){ end = -1; } arr[++end] = value; elements++; } /** * 删除数据,从队头删除 */ public long remove(){ long value = arr[front++]; //当front指到队列结尾时,再调整指到初始位置 if(front == arr.length){ front = 0; } elements--; return value; }
2、完整代码:
package org.gzw.ch03; /** * 队列 */ public class MyCycleQueue { //底层试用数组 private long[] arr; //有效数据的长度 private int elements; //对头 private int front; //队尾 private int end; /** * 默认无参构造 */ public MyCycleQueue(){ arr = new long[10]; elements = 0; front = 0; end = -1; } /** * 带参数的构造方法 */ public MyCycleQueue(int maxsize){ arr = new long[maxsize]; elements = 0; front = 0; end = -1; } /** * 添加数据,从队尾插入 */ public void insert(long value){ //当end指到队列结尾时,再调整指到初始位置 if(end == arr.length - 1){ end = -1; } arr[++end] = value; elements++; } /** * 删除数据,从队头删除 */ public long remove(){ long value = arr[front++]; //当front指到队列结尾时,再调整指到初始位置 if(front == arr.length){ front = 0; } elements--; return value; } /** * 查看数据,从队头查看 */ public long peek(){ return arr[front]; } /** * 判断是否为空 */ public boolean isEmpty(){ return elements == 0; } /** * 判断是否满了 */ public boolean isFull(){ //return (end - front) == arr.length; return elements == arr.length; } }
3、测试:
package org.gzw.ch03; public class TestMyCycleQueue { public static void main(String[] args) { MyCycleQueue myCycleQueue = new MyCycleQueue(4); myCycleQueue.insert(23); myCycleQueue.insert(45); myCycleQueue.insert(13); myCycleQueue.insert(1); System.out.println(myCycleQueue.isEmpty()); System.out.println(myCycleQueue.isFull()); System.out.println(myCycleQueue.peek()); System.out.println(myCycleQueue.peek()); while(!myCycleQueue.isEmpty()){ System.out.print(myCycleQueue.remove() + ", "); } System.out.println(); System.out.println(myCycleQueue.isFull()); System.out.println(myCycleQueue.isEmpty()); System.out.println(myCycleQueue.peek()); System.out.println("-----------------------------"); //这里不会报错,原因是end位置在队列结尾时,会在指向初始位置 myCycleQueue.insert(21); System.out.println(myCycleQueue.peek()); myCycleQueue.insert(22); myCycleQueue.insert(23); myCycleQueue.insert(24); while(!myCycleQueue.isEmpty()){ System.out.print(myCycleQueue.remove() + ", "); } System.out.println(); System.out.println(myCycleQueue.peek()); } }
4、运行结果:
false true 23 23 23, 45, 13, 1, false true 23 ----------------------------- 21 21, 22, 23, 24, 21
相关文章推荐
- 数据结构循环队列斐波拉契数列的实现(c语言)
- 数据结构-队列(循环)-2015
- 数据结构--循环队列
- 数据结构之循环队列
- 数据结构——循环队列——2016_12_28
- 数据结构 -- 队列 & 循环队列 -- 数组实现
- 数据结构-循环队列
- 一步一步学数据结构之1--1(队列--线性表实现--不存在循环)
- JAVA数据结构---循环队列
- C#数据结构回顾之循环队列
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构与算法(Python)——常见数据结构Part3(队列和循环队列)
- 九度 1415 不一样的循环队列 【数据结构】
- 数据结构---双向链表实现队列与循环链表
- C语言数据结构——循环队列
- 数据结构(5)——循环队列的顺序表示和实现
- 数据结构--循环队列(简易)--C
- 数据结构之循环队列的实现
- 数据结构-队列的顺序存储(循环队列)