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用数组实现循环队列的主要内容,如果未能解决你的问题,请参考以下文章

go语言循环队列的实现

数据结构 - 数组模拟非循环和循环队列(Java实现)

java使用数组实现循环队列

java使用数组实现循环队列

九 循环队列的java实现

Java栈[数组,单链表],队列数组,链表和循环队列的实现