基于java数据结构实验 队列实验报告

  • 格式:doc
  • 大小:119.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

// 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 = new Sequeue(5);

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;

}