复习了下数据结构,用Java的数组实现一下循环队列。
队列的类
1 //循环队列 2 class CirQueue{ 3 private int QueueSize; 4 private int front; 5 private int rear; 6 private int[] queueList ; 7 8 public CirQueue(int QueueSize){ 9 this.QueueSize = QueueSize; 10 queueList = new int[QueueSize];11 front = 0;12 rear = 0;13 }14 15 //获取队列头元素16 public int getQueueElement(){17 //如果队列不为空,返回队头元素,否则抛出异常提示队列为空18 int element = -1;19 if(!isEmpty()){20 element = queueList[front];21 return element;22 }23 else {24 System.out.println("队列为空");25 return -1;26 }27 28 }29 30 //出队31 public int deQueue(){32 int element = -1;33 if(!isEmpty()){34 element = queueList[front];35 front =(front+1)%QueueSize;36 return element;37 }38 else {39 System.out.println("队列为空");40 return -1;41 }42 43 }44 45 46 47 48 49 //入队50 public void enQueue(int element){51 //如果队列未满,添加元素到队尾,否则提示队列已满52 if(!isFull()){53 queueList[rear] = element ;54 rear = (rear+1)%QueueSize;55 56 }57 else {58 System.out.println("队列已满");59 }60 }61 62 //判断队列是否为空63 public boolean isEmpty(){64 boolean b = false;65 if(rear == front)66 b = true;67 return b;68 }69 70 71 //判断队列是否已满72 public boolean isFull(){73 boolean b = false;74 if((rear+1)%QueueSize == front)75 b = true;76 return b;77 }78 79 }
创建对象并测试
package com.test;import java.util.*;public class StructTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //新建并初始化存储空间为3的循环队列(方便判断队满条件,浪费一个数组空间) CirQueue cirQueue = new CirQueue(4); //入队3个元素 cirQueue.enQueue(1); cirQueue.enQueue(2); cirQueue.enQueue(3); //获取队头元素,获取 但不改变队列 int temp = cirQueue.getQueueElement(); System.out.println(temp); //出队 获取队头元素,并且队头指针往后移一位 temp = cirQueue.deQueue(); System.out.println(temp); //再次获取队头元素 temp = cirQueue.getQueueElement(); System.out.println(temp); }}
输出:
112
人生最大的错误是不断担心会犯错