基于java数据结构实验 队列实验报告
- 格式:doc
- 大小:119.50 KB
- 文档页数:7
实验报告
// TODO: handle exception
System.out.println(e.getMessage());
}();
System.out.println("队头数据为:"+res);
} catch (Exception e) {
// TODO: handle exception
break;
case 'h':
try {
int res=myQueue.peekqueue
System.out.println(e.getMessage());
}
case 'e':
scanner.close();
loop=false;
break;
default:
break;
}
}
System.out.println("exit");
}
运行结果:
顺序队列运行测试及结果:
顺序循环队列运行测试及结果:
实验总结:
通过这一次的实验,我不仅实现了队列的算法,还解决了上次作业遗留下来的问题。队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入的一端为队尾,允许删除的一端为队头,先进先出,相邻元素具有前驱与后继关系。
附:源程序:
顺序队列:
package main;
public class Sequeue
private int Maxsize=20;
private int front,rear;
private T[] arr;
public Sequeue(){
front=rear=-1;
arr=(T[])new Object[Maxsize];
}
public Sequeue(int n){
front=rear=-1;
arr=(T[])new Object[n];
}
public boolean isEmpty(){
return rear==front;
}
public boolean isFull(){
return rear==Maxsize-1;
}
public void add(T obj){
if(isFull()){
System.out.println("duilieyiman");
return;
}
rear++;
arr[rear]=obj;
}
public T getQueue(){
if(isEmpty()){
throw new RuntimeException("null");
}
front++;
return arr[front];
}
public void show(){
if(isEmpty()){
System.out.println("null");
}
for(int i=front+1;i<=rear;i++){
System.out.print("arr["+i+"]="+arr[i]+" ");
}
}
public T peekQueue(){
if (isEmpty()) {
throw new RuntimeException("队空,不能取数据");
}
return arr[front+1];
}
public static void main(String[] args) {
Sequeue
queue1.add("li");
queue1.add("ke");
queue1.add("wu");
queue1.add("fa");
queue1.add("xi");
queue1.show();
System.out.println();
System.out.println("出队的是:"+queue1.getQueue()); System.out.println("出队后:");
queue1.show();
// TODO Auto-generated method stub
}
}
循环顺序队列
package main;
public class CircleQueue
private int Maxsize=20;
private int front,rear;
private T[] arr;
public CircleQueue(){
front=rear=0;
arr
}
public CircleQueue(int n){
front=rear=0;
arr=(T[])new Object[n];
}
public boolean isEmpty(){
return rear==front;
}
public boolean isFull(){
return front==(rear+1)%Maxsize;
}
public void add(T obj){
if(isFull()){
System.out.println("duilieyiman");
return;
}
rear=(rear+1)%Maxsize;
arr[rear]=obj;
}
public T getQueue(){
if(isEmpty()){
throw new RuntimeException("null");
}
front=(front+1)%Maxsize;
return arr[front];
}
public void show(){
if(isEmpty()){
System.out.println("null");
}
for(int i=front+1;i<=front+count();i++){
System.out.print("arr["+i+"]="+arr[i]+" ");
}
System.out.println();
}
public int count(){
return (rear+Maxsize-front)%Maxsize;
}