欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

相关标签: 知识总结 java