Java用数组实现顺序队列
2011-05-17 19:38
579 查看
import java.util.*;
/**
* 顺序存储结构队列
*/
public class Queue {
private static final int MAX_SIZE = 100;
private Object[] queue; //队列
private int front; //头指针
private int rear; //尾指针
private int length; //队列初始化长度
//初始化队列
private void init(){
queue = new Object[this.length + 1];
front = rear = 0;
}
//入队
public void put(Object object) throws Exception{
if(isFull()){
throw new Exception("入队失败!队列已满!");
}
queue[rear] = object;
rear = (rear + 1) % queue.length;
}
//出队
public Object get() throws Exception{
if(isEmpey()){
throw new Exception("出队失败!队列为空!");
}
Object object = queue[front];
queue[front] = null; //释放对象
front = (front + 1) % queue.length;
return object;
}
//清空队列
public void clear(){
queue = null;
queue = new Object[this.length];
}
//获得队列当前大小
public int size(){
return (rear - front + queue.length ) % queue.length;
}
//判断队列是否已满
public boolean isFull(){
return (rear + 1) % queue.length == front;
}
//判断队列是否为空
public boolean isEmpey(){
return front == rear;
}
public Queue(){
this.length = MAX_SIZE;
init();
}
public Queue(int length){
this.length = length;
init();
}
public static void main(String[] args) {
Queue queue = new Queue(5);
char[] data = new char[]{'沧','海','一','声','笑'};
try {
for (int i = 0; i < data.length; i++) {
System.out.println("入队数据:" + data[i]);
queue.put(data[i]);
}
System.out.println("队大小:" + queue.size());
System.out.println("---------------------");
while(!queue.isEmpey()){
System.out.println("出队数据:" + queue.get());
}
System.out.println("队空否?/t" + queue.isEmpey());
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 顺序存储结构队列
*/
public class Queue {
private static final int MAX_SIZE = 100;
private Object[] queue; //队列
private int front; //头指针
private int rear; //尾指针
private int length; //队列初始化长度
//初始化队列
private void init(){
queue = new Object[this.length + 1];
front = rear = 0;
}
//入队
public void put(Object object) throws Exception{
if(isFull()){
throw new Exception("入队失败!队列已满!");
}
queue[rear] = object;
rear = (rear + 1) % queue.length;
}
//出队
public Object get() throws Exception{
if(isEmpey()){
throw new Exception("出队失败!队列为空!");
}
Object object = queue[front];
queue[front] = null; //释放对象
front = (front + 1) % queue.length;
return object;
}
//清空队列
public void clear(){
queue = null;
queue = new Object[this.length];
}
//获得队列当前大小
public int size(){
return (rear - front + queue.length ) % queue.length;
}
//判断队列是否已满
public boolean isFull(){
return (rear + 1) % queue.length == front;
}
//判断队列是否为空
public boolean isEmpey(){
return front == rear;
}
public Queue(){
this.length = MAX_SIZE;
init();
}
public Queue(int length){
this.length = length;
init();
}
public static void main(String[] args) {
Queue queue = new Queue(5);
char[] data = new char[]{'沧','海','一','声','笑'};
try {
for (int i = 0; i < data.length; i++) {
System.out.println("入队数据:" + data[i]);
queue.put(data[i]);
}
System.out.println("队大小:" + queue.size());
System.out.println("---------------------");
while(!queue.isEmpey()){
System.out.println("出队数据:" + queue.get());
}
System.out.println("队空否?/t" + queue.isEmpey());
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- Java用数组实现顺序队列
- java使用数组实现顺序队列
- Java 数组实现顺序队列
- Java用数组实现顺序队列
- Java中队列的实现(1)-使用顺序存储结构(数组)以及实现
- 队列--基于简单循环数组实现(Java)
- Java数组实现循环队列
- java队列实现(顺序队列、链式队列、循环队列)
- 数据结构与算法分析笔记与总结(java实现)--数组3:调整数组顺序使奇数位于偶数前面
- java使用数组实现优先级队列
- Java实现简单的顺序队列
- 调整数组顺序使基数位于偶数前面java实现
- 调整数组顺序使奇数位于偶数前面(Java实现)
- Java数组实现循环队列的两种方法
- Java实现链式队列,顺序队列,循环队列
- 数据结构学习----顺序循环队列(Java实现)
- 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)
- Java数据结构与算法之顺序表和链表实现栈和队列
- 用Java数组实现队列
- JAVA实现数组队列,循环数组队列,链式队列