队列的入队和出队

package com.itheima;
应用场景是6个人,依次数数,数到3就出队列,问最后一个数到3的是谁?
/**
* 队列
* @author Administrator
*
*/
public class MyQueue {

private Object datas[];
private int pushIndex;//入队的下标
private int popIndex;//出兑的下标
private int counts;//记录数据个数

/**
 * 队列的构造方法
 * @param size
 */
public MyQueue(int size){
    datas = new Object[size];
}

public MyQueue(){
    this(10);
}
/**
 * 判断队列是否是空的
 * @return
 */
public boolean isEmpty(){
    return counts == 0;
}

/**
 * 判断队列是否是满的
 * @return
 */
public boolean isFull(){
    return counts == datas.length;
}

public String toString(){
    StringBuilder mess = new StringBuilder();
    for (int i = popIndex; i < counts; i++) {
        mess.append(datas[i % counts] + ",");

    }
    return mess + ",";
}

/**
 * 入队列
 * @param data
 */
public void push(Object data){
    //如果队列满则返回
    if (isFull()) {
        return;
    }
    datas[pushIndex ++ % datas.length] = data;
    counts ++;
}

/**
 * 出队列
 * @param data
 */
public Object popup(){
    Object data = datas[popIndex ++ % datas.length];
    counts --;
    return data;
}

}
队列进行测试
package com.itheima;

/**
* 对队列进行测试
* @author Administrator
*
*/
public class TestMyQueue {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    //计数器
    int counts = 0;
    //初始化队列
    MyQueue queue = new MyQueue();
    //6个人入队
    for (int i = 0; i < 6; i++) {
        queue.push(i + 1);
    }

    while (!queue.isEmpty()) {
        Object d = queue.popup();
        counts ++;
        if (counts % 3 == 0) {
            System.out.println(d);
        } else {
            queue.push(d);
        }
    }
}

}

你可能感兴趣的:(队列)