JAVA数据结构学习1.2队列的数组实现
程序员文章站
2024-03-18 11:38:34
...
Queue队列的数组实现
queue有isEmpty,isFull,add,poll这几个基本方法
其中:isEmpty判断方式:尾标记等于头标记时;
isFull判断方式:尾标记-头标记=MaxSize时;
add:先判断是否isFull,尾标记+1;并赋值array[front+±rear]=value;
poll:先判断是否isEmpty,头标记+1;并返回值;
代码实现
package primDataStructure;
//import java.util.LinkedList;
//import java.util.Queue;
public class queue {
private int[]array;
private int maxSize;
private int rear,front;
public queue(int maxsize) {
maxSize=maxsize;
array=new int[maxSize];
rear=-1;
front=-1;
}
public boolean isEmpty() {
if(front==rear) {
return true;
}
return false;
}
public boolean isFull() {
if(front-rear==maxSize) {
return true;
}
return false;
}
public boolean add(int element) {
if(!isFull()) {
array[front-rear]=element;
front++;
return true;
}
else {
throw new RuntimeException("队列已满,无法继续插入");
}
//return false;
}
public int poll() {
if(isEmpty()) {
throw new RuntimeException("队列为空,无法继续出队列");
}
if(rear==front) {
throw new RuntimeException("队列已经到队尾,无法继续出队列");
}
return array[maxSize-(front-rear++)];
}
public int peek() {
if(isEmpty()) {
throw new RuntimeException("队列为空,无法继续出队列");
}
return array[rear+1];
}
public boolean hasNext() {
if(isEmpty()) {
return false;
}
if(rear==front) {
return false;
}
return true;
}
public static void main(String args[]) {
queue q=new queue(5);
for(int i=0;i<5;i++) {
q.add(i);
}
for(int i=0;i<5;i++) {
System.out.print(q.poll()+" ");
}
for(int i=5;i<10;i++) {
q.add(i);
}
for(int i=5;i<10;i++) {
System.out.print(q.poll()+" ");
}
}
}
上一篇: 自定义队列
下一篇: Python 自定义类