循环队列(Java数组实现)
public class CycleArrayQueue
{
private static final String TAG = "CycleArrayQueue";
private Object[] queue;
private int SIZE = 10;//初始化大小
private int front = 0;
private int rear = 0;
private int usesize = 0;
public CycleArrayQueue()
{
queue = new Object[SIZE];
}
public boolean isEmpty()
{
return Math.abs(rear - front + SIZE) % SIZE == 0;
}
public int getSize()
{
return (Math.abs(rear - front + SIZE) % SIZE);
}
public void insert(Object obj) throws Exception
{
if ((rear + 1) % SIZE == front) throw new Exception("栈已满!");
queue[(rear % SIZE)] = obj;
rear = (rear + 1) % SIZE;
usesize++;
}
public void delete() throws Exception
{
if ((front + 1) % SIZE == rear) throw new Exception("空栈!");
queue[(front % SIZE)] = null;
front = (front + 1) % SIZE;
usesize--;
}
public void display() throws Exception
{
if (usesize == 0) throw new Exception("空队列!");
if (rear >= front)
{
for (int i = front; i < rear; i++)
{
System.out.print(queue[i] + "<-");
}
} else
{
for (int i = front; i < SIZE; i++)
{
System.out.print(queue[i] + "<-");
}
for (int i = 0; i < rear; i++)
{
System.out.print(queue[i] + "<-");
}
}
System.out.println("");
}
public static void main(String[] args) throws Exception
{
CycleArrayQueue caq = new CycleArrayQueue();
caq.insert("123");
caq.insert("==");
caq.insert("tt123");
caq.insert("gg");
caq.display();
System.out.println(caq.getSize());
caq.delete();
caq.delete();
caq.insert("1=");
caq.insert("2=");
caq.insert("3=");
caq.insert("4=");
caq.insert("5=");
caq.insert("6=");
caq.insert("7=");
// caq.insert("8=");
// caq.insert("op=");
caq.display();
}
}
醉饮山林,自是闲暇白云间。笑红尘,总是爱恨贪嗔痴。若问人间逍遥在,风生之谷,客从山来。