Java用数组实现循环队列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java用数组实现循环队列相关的知识,希望对你有一定的参考价值。
复习了下数据结构,用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); } }
输出:
1 1 2
以上是关于Java用数组实现循环队列的主要内容,如果未能解决你的问题,请参考以下文章