题解 | #【模板】循环队列#

【模板】循环队列

http://www.nowcoder.com/practice/0a3a216e50004d8bb5da43ad38bcfcbf

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String num = sc.nextLine();
        String[] arr = num.split(" ");
        CircleQueue que = new CircleQueue(Integer.valueOf(arr[0])+1);
        while(sc.hasNextLine()){
            String[] input = sc.nextLine().split(" ");
            if(input[0].equals("push"))
                que.push(Integer.valueOf(input[1]));
            else if(input[0].equals("front"))
               que.front();
            else if(input[0].equals("pop"))
               que.pop();
        }
    }
    
}
class CircleQueue{
    private int maxSize;
    private int front;
    private int rear;
    private int[] circle;
    public CircleQueue(int size){
        maxSize = size;
        circle = new int[maxSize];
        front = 0;
        rear = 0;
    }
    public void push(int num){
        if((rear+1)%maxSize==front){
            System.out.println("full");
        }else{
            circle[rear] = num;
            rear = (rear+1)%maxSize;
        }
            
    }
    public void front(){
        if(rear==front)
            System.out.println("empty");
        else
            System.out.println(circle[front]);
        
    }
    public void pop(){
        if(rear == front)
            System.out.println("empty");
        else{  
            System.out.println(circle[front]);
            front = (front+1)%maxSize;
        }
    }
}

注意: 1.在源文件中规定只有一个类为public类型,且与文件名相同。 因为每个文件(编译单元)只有一个public类,表示每个文件都有单一的公共接口,通过public来表现。如果有多个以上就会报错。 2.循环队列往往牺牲一个单元来区分队空和队满。 队满条件:(Q.rear+1)%MaxSize==Q.front 队空条件:Q.rear==Q.front 相比于队列,循环队列的优点是不会出现假队满(假溢出)的情况。

全部评论

相关推荐

梦倩倩:同学,瞅瞅我司,医疗独角兽,校招刚开,名额有限,先到先得,****最新动态,绿灯直达,免笔试~
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务