一般队列和循环队列及优先级队列的实现
2018-03-27 12:30
477 查看
一般队列
队列是先进先出,后进后出的数据结构。可以想象成排队的状态。public class Queue{ //数组实现队列 private int[] arr; //最大空间 private int maxSize; //有效元素大小 private int elems; //队列头(用于删除数据) private int font; //队列尾(用于插入数据) private int end; //构造方法 public Queue(int maxSize){ this.maxSize=maxSize; arr=new int[maxSize]; end=-1; } //插入数据 public void insert(int value){ arr[++end]=value; elems++; } //移除数据 public int remove(){ elems--; return arr[font++]; } //是否为空 public boolean isEmpty(){ return (elems == 0); } //是否满了 public boolean isFull(){ return (end == maxSize-1) } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
循环队列
当一个队列填满的时候,又可以从头开始添加public class MyQueue{ private int[] arr; private int elems; private int font; private int end; public MyQueue(int maxSize){ this.maxSize=maxSize; arr=new int[maxSize]; end=-1; } public void insert(int value){ if(end == maxSize-1){ end = -1; } arr[++end] = value; elems++; } public int remove(){ int temp=arr[font++]; if(font == maxSize){ font = 0; } elems--; return temp; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
优先级队列
按填入数据的大小进行自动排序之后再加入队列中public class PriorityQueue{ private int[] arr; private int maxSize; private int elems; public PriorityQueue(int maxSize){ this.maxSize = maxSize; arr = new int[maxSize]; } //插入数据 public void insert(int value){ int i=0; for(i=0;i<elems;i++){ //从大到小排序 if(arr[i] < value){ break; } } for(int j=elems;j>i;j--){ arr[j] = arr[j-1]; } arr[i] = value; elems++; } //移除数据(从小到大输出) public int remove(){ elems--; return arr[elems-1]; } }
相关文章推荐
- 一般队列和循环队列及优先级队列的实现
- 循环队列与优先级队列的Java实现
- 另类循环队列---未实现题目要求,实现了双指针(Front、Rear)
- 数据结构:循环队列(C语言实现)
- (五)使用最大堆实现优先级队列
- 用数组实现循环队列(C实现)
- 1.5 实现优先级队列
- 循环队列实现K阶斐波那契数列求值
- 带阻塞读模式的循环队列实现
- C++类模板 实现循环队列的顺序存储结构算法 《数据结构》(北京科海) 部分摘抄 自己编写实现
- 循环队列的简单实现
- 循环队列——队列的顺序表示和实现
- 用数组实现 优先级队列
- 队列的数组实现(循环队列)
- 通过共享内存,利用循环队列实现两个进程A,B之间的通信
- 顺序循环队列的实现(c语言)
- 队列的循环数组实现
- c/c++实现顺序循环队列和链式队列
- 简单循环队列(C++模版技术实现)
- 循环队列的实现