JAVA数据结构学习1.2队列的数组实现

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()+" ");
		} 
	}
}

发布了13 篇原创文章 · 获赞 1 · 访问量 455

猜你喜欢

转载自blog.csdn.net/weixin_43458072/article/details/104331712
今日推荐