JAVA数据结构学习1.4循环队列

循环队列的原理

循环队列实际上就是抛弃一个点作为队列满的标记
当尾标记再挪动一位取模就要等于头标记时,就代表队列已经满了。
当尾标记和头标记在同一位置时,就表示队列为空
除此之外,插入队列时必须对尾标记取模。抛出队列时必须对头标记取模。

package primDataStructure;
public class cycleQueue{
	private int rear,front,maxSize,array[];
	public cycleQueue(int max) {
		maxSize=max+1;
		array=new int[maxSize];
		rear=0;front=0;
	}
	public boolean isEmpty() {
		if(rear==front) {
			return true;
		}
		else {
			return false;
		}
	}
	public boolean isFull() {
		if((rear+1)%maxSize==front) {
			return true;
		}
		else {
			return false;
		}
	}
	public boolean add(int x) {
		if(isFull()) {
			throw new RuntimeException("队列已满");
		}
		else {
			rear++;
			rear=rear%maxSize;
			array[rear]=x;
			return true;
		}
	}
	public int poll() {
		if(isEmpty()) {
			throw new RuntimeException("队列为空");
		}
		else {
			front++;
			front=front%maxSize;
			return array[front];
		}
	}
	public static void main(String args[]) {
		cycleQueue cq=new cycleQueue(5);
		for(int i=0;i<5;i++) {
			cq.add(i);
		}
		for(int i=0;i<5;i++) {
			System.out.print(cq.poll()+" ");
		}
		for(int i=5;i<10;i++) {
			cq.add(i);
		}
		for(int i=5;i<10;i++) {
			System.out.print(cq.poll()+" ");
		}
	}
}
发布了13 篇原创文章 · 获赞 1 · 访问量 453

猜你喜欢

转载自blog.csdn.net/weixin_43458072/article/details/104331912