⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arrayqueue.java~11~

📁 源程序(包括最初的版本
💻 JAVA~11~
字号:
package queue;

/**
   用顺序存储实现队列
 */
public class ArrayQueue implements Queue {
    //data members
    protected int front;//队头
    protected int rear;//队尾
    protected Object[]queue;

     // 构造函数
    public ArrayQueue() {
        this(10);
    }
    public ArrayQueue(int initialCapacity){
        if (initialCapacity < 1)
            throw new IllegalArgumentException  //如果initialCapacity<1抛出异常
                  ("initialCapacity must be >= 1");
         queue = new Object [initialCapacity+1];
         front=rear=0;

    }

    /**实现Queue接口的方法*/
    //判断队列是否为空
    public boolean isEmpty() {
        return front==rear;
    }

    //获得队头元素
    public Object getFrontElement() {
        return queue[front];
    }

    //获得队尾元素
    public Object getRearElement() {
        return queue[rear-1];
    }

    //添加元素入队列
    public void put(Object theElement) {
        if(rear==queue.length-1) {
            queue=changeQueueLength(queue,2*queue.length);
        }
        queue[rear]=theElement;
        rear++;
    }
    //内部方法,用新长度newLength进行表空间的扩容
    Object [] changeQueueLength(Object []element,int newLength){
        Object[] newArray=new Object[newLength];
        for(int i=0;i<queue.length-1;i++){
            newArray[i]=queue[i];
        }
        front=0;rear=queue.length-1;
        return newArray;
    }

    //删除队头元素
    public Object remove() {
       if(isEmpty()) {
           throw new IllegalArgumentException("the queue is empty");
       }
       Object element=queue[front];
       for(int i=0;i<queue.length-1;i++) {
           queue[i]=queue[i+1];
       }
       front=0;rear--;
       return element;
    }

    public int length(){
        return rear-front;
    }
    /** 到字符串的转换 */
     public String toString()
     {
        StringBuffer s = new StringBuffer("[");

     // 添加元素到字符缓冲区
        for (int i = 0; i < queue.length-1; i++)
           if (queue[i] != null)
              s.append(queue[i].toString() + ", ");

        if (queue.length-1 > 0)
           s.delete(s.length() - 2, s.length());  // 去掉最后一个 ","

        s.append("]");

     // 返回创建的字符串 s
        return new String(s);
     }


    //测试方法
    public static void main(String args[]) {

        // 测试缺省的构造函数
        ArrayQueue q=new ArrayQueue(2);

        // 测试判空操作isEmpty()
        if (q.isEmpty())
            System.out.println("The queue is empty");
        else System.out.println("The queue is not empty");

        //构造一个队列
        q.put(new Integer(1));
        q.put(new Integer(3));
        q.put(new Integer(6));
        q.put(new Integer(2));
        q.put(new Integer(7));
        System.out.println(q.toString());

        //测试获得队头元素getFrontElement()
        Integer a=(Integer)q.getFrontElement();
        System.out.println("the front of queue is " +a);

        //测试获得队尾元素getRearElement()
        a=(Integer)q.getRearElement();
        System.out.println("the rear of queue is " +a);

        //测试添加元素put()
        System.out.println("the added element of queue is " +new Integer(8));
        q.put(new Integer(8));
        System.out.println("the new queue is"+q.toString());

        //删除队尾元素remove()
        a=(Integer)q.remove();
        System.out.println("the remove element of queue is "+a);
        System.out.println("the new queue is"+q.toString());

    }











}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -