欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

数据结构-队列的数组实现,数据结构队列数组,package com.

来源: javaer 分享于  点击 2998 次 点评:112

数据结构-队列的数组实现,数据结构队列数组,package com.


package com.structures.list;import java.util.NoSuchElementException;/* *  Create Queue by Array */public class JQueue<E> {    public E[] data;    public int size;    public int front;    public int rear;    int capacity = 10;    public JQueue() {        data = (E[]) new Object[capacity];        size = 0;    }    public JQueue(int capacity) {        if (capacity < 0)            throw new IllegalArgumentException("capacity < 0");        data = (E[]) new Object[capacity];        size = 0;    }    public boolean isEmpty() {        return size == 0;    }    public E enQueue(E e) {        if (size == data.length) {            // capacity = 2 * capacity            if (rear == 0) {                E[] bigger = (E[]) new Object[data.length * 2];                for (int i = front; i < data.length - front; i++) {                    bigger[i] = data[i];                }                bigger[data.length] = e;                rear = data.length;                capacity = 2 * capacity;                front = 0;                data = bigger;            } else {                // capacity = 2 * capacity                E[] bigger = (E[]) new Object[data.length * 2];                for (int i = front; i < data.length - front + 1; i++) {                    bigger[i - front] = data[i];                }                for (int i = 0; i < rear; i++) {                    bigger[i + data.length - 1] = data[i];                }                data = bigger;                front = 0;                rear = data.length;                capacity = 2 * capacity;            }        }        if (size == 0) {            front = 0;            rear = 0;        }        data[rear] = e;        rear = (rear + 1) % capacity;        size++;        return e;    }    // Delete the top    public E deQueue() {        if (size == 0) {            throw new NoSuchElementException("Queue underflow");        }        E e = data[front];        data[front] = null;        front = (front + 1) % capacity;        size--;        return e;    }    public static void main(String[] args) {        JQueue<Integer> queue = new JQueue<Integer>();        for (int i = 0; i < 11; i++) {            queue.enQueue(i);        }        for (int i = 0; i < 5; i++) {            queue.deQueue();        }        System.out.println(queue.front);        System.out.println(queue.rear);        System.out.println(queue.size);    }}//该片段来自于http://byrx.net
相关栏目:

用户点评