您的位置:首页 > 编程语言 > Java开发

java使用数组实现队列

2015-02-14 10:42 573 查看

1.1. 队列的数据结构

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

1.2. Java实现

QueueTest

package ch04;

public class QueueTest {

public static void main(String[] args) {
ArrayQueue queue = new ArrayQueue(10);

System.out.println(queue.isEmpty());

for (int i = 0; i < 10; i++) {
queue.insert(i);
}
System.out.println(queue.isFull());

while (!queue.isEmpty()) {
System.out.println(queue.remove());
}
}

}

class ArrayQueue {
private int[] arrInt;// 内置数组
private int front;// 头指针
private int rear;// 尾指针

public ArrayQueue(int size) {
this.arrInt = new int[size];
front = 0;
rear = -1;
}

/**
* 判断队列是否为空
*
* @return
*/
public boolean isEmpty() {
return front == arrInt.length;
}

/**
* 判断队列是否已满
*
* @return
*/
public boolean isFull() {
return arrInt.length - 1 == rear;
}

/**
* 向队列的队尾插入一个元素
*/
public void insert(int item) {
if (isFull()) {
throw new RuntimeException("队列已满");
}
arrInt[++rear] = item;
}

/**
* 获得对头元素
*
* @return
*/
public int peekFront() {
return arrInt[front];
}

/**
* 获得队尾元素
*
* @return
*/
public int peekRear() {
return arrInt[rear];
}

/**
* 从队列的对头移除一个元素
*
* @return
*/
public int remove() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
return arrInt[front++];
}
}


运行结果如下:

false

true

0

1

2

3

4

5

6

7

8

9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: