数据结构-队列(循环)-2015

来源:互联网 发布:网络诈骗举报电话多少 编辑:程序博客网 时间:2024/06/05 03:39

循环队列,重点是队空 或 队满 的判断。

/** * 循环队列,重点是队空 或 队满 的判断 */public class QueueDemo {private static int maxSize = 5;private Object[] array;private int front;       //队头private int rear;        //队尾    private int nItems = 0;          public QueueDemo(){    this(maxSize);    }        private QueueDemo(int size){    int front = 0;    int rear = 0;        array = new Object[size];    }        public void insert(Object obj){    if(rear + 1 % maxSize == front){    System.out.println("队列满。");    return;    }        /*if(rear + 1 == maxSize)    rear = 0;*/        array[rear] = obj;    nItems++;        if(this.isFull()){    throw new RuntimeException("队列满==========");    }    rear = (rear + 1) % maxSize;        }        public Object remove(){    if( rear == front){    throw new RuntimeException("队列空==========");    }        Object obj = array[front];        front = (front + 1) % maxSize;        nItems--;    return obj;    }        public Object peek(){    Object obj = array[front];        return obj;    }        public boolean isFull(){    boolean flag = false;    if(nItems >= maxSize)    flag = true;    return flag;    }        public boolean isEmpty(){    boolean flag = false;    if(nItems == 0)    flag = true;        return flag;    }        public int size(){    return nItems;    }        public void display(){    while(nItems > 0){    Object obj = this.remove();    System.out.println("-->" + obj);    }    }    public static void main(String[] args){    QueueDemo queue = new QueueDemo();    /*测试1 队列满queue.insert("a");    queue.insert("b");    queue.insert("c");    queue.insert("d");    queue.insert("e");    queue.insert("f");    */        /*测试2 队列空*/    queue.insert("a");    queue.insert("b");    queue.remove();    queue.remove();    queue.remove();    //    queue.display();    System.out.println(queue);        System.out.println("end========");    }}



0 0
原创粉丝点击