队列的设计与实现及应用
一、目的和要求:
(1)正确定义队列(顺序队或链队);
(2)掌握队列基本操作实现方法;
(3)能正确分析算法的时间复杂度;
(3)采用队列解决实际问题。
二、实验原理及内容:
(1)定义队列(顺序队列或链队列);
(2)队列基本操作实现方法;
(3)采用队列解决实际问题(银行排队叫号服务)。
三、实验步骤:(以链队列为例实现,也可以自行采用顺序队列实现)
(1)定义链队列;
(2)链队列基本操作实现方法;
(3)采用链队列解决银行排队叫号服务问题。
四、实验过程
1、工程结构如下图所示:
2、队列接口定义:IStack.java
public interface IQueue<E> {
boolean in(E item);//入队列操作
E out(); //出队列操作
E head(); //取对头元素
int size();//求队列的长度
boolean isEmpty();//判断队列是否为空
boolean isFull();//判断队列是否为满
void clear();//清空队列
}
3、顺序队列的定义及实现:SeqQueue.java
import java.lang.reflect.Array;
public class SeqQueue<E> implements IQueue<E> {
private int maxsize; //队列的容量
private E[]data; // 存储循环顺序队列中的数据元素
private int front; // 指示最近一个己经离开队列的元素所占的位置
private int rear; // 指示最近一个进行入队列的元素的位置
private int size;
public int getMaxsize() {
returnmaxsize;
}
public void setMaxsize(int maxsize) {
this.maxsize = maxsize;
}
public E[] getData() {
returndata;
}
public void setData(E[] data) {
this.data = data;
}
public int getFront() {
returnfront;
}
public void setFront(int front) {
this.front = front;
}
public int getRear() {
returnrear;
}
public void setRear(int rear) {
this.rear = rear;
}