Java数据结构之《循环队列》(难度系数75)

一、前言:

  这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完,并成功实现,会陆续更新,记得三连哈哈! 所有答案供参考,不是标准答案,是博主自己研究的写法。

二、题目要求如下: 

(第 3 题) 循环队列(难度系数75)

循环队列
标准输入输出
题目描述:
根据给定的空间构造顺序循环队列,
规定队满处理方法为少用一个元素空间。例如,给定5个元素空间构造循环队列,则只能存放4个元素。试根据入队及出队操作判断队列最后的元素存放情况,并输出最后队列中的元素值,即完成给定入队及出列操作后一次性全部出队的元素值。要求采用顺序队列完成。
输入:
输入的第一行为一个自然数n,表示要求构造的顺序循环队列空间数。第二行为操作次k,接下来k行为出队入队操作,每行各代表一次操作。
入队用in表示出队用out表示,如果是入队,则in隔一空格后为一整数,表示入队元素值。

输出:输出完成所有入队出队操作后,一次性出队元素。用一个空格隔开。可以假定队在完成所有操作后不为空。
输入样例:
4
7
in 1
in 2
in 5
in 6
out
out
in 8
输出样例:
5 8

三、代码实现:(基本原理在代码注释中!)

补充:队列的引用却new的是实现类LinkedList的实例化,因为JDK提供的队列:Queue是一个接口,要有实现类去实现接口。

(1)创建一个Main类(里面有满足输入的变量与操作的方法):

package com.fs.qu;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int n = sc.nextInt();  //代表需要测试的总次数
        int k = sc.nextInt();  //代表需要入队和出队的操作次数
        //队列是一个接口,要new它的实现类LinkedList对象才行
        Queue<Integer> queue = new LinkedList<>();  //设置集合中要操作的元素是整型
        while(k>0){
            String str = sc.next();
            //如果输入的是字符串"in",代表入队
            if(str.equals("in")){
                int value = sc.nextInt();
                if(queue.size()<n-1){
                    queue.add(value);  //入队
                }
            }
            //如果输入的是字符串"out",代表出队
            if(str.equals("out")){
                if(queue.size()>0){
                    queue.poll();  //出队
                }
            }

            k--;
        }
        //只要队不为空。就输出队列里的元素
        while(queue.size()>0){
            System.out.print(queue.poll()+" ");
        }
    }
}

四、不同情况的代码运行结果:

<1> 首先测试输入题目中输入样例:

<2>自己输入的测试: (建议手打,直接复制这个可能出现格式错误导致输出异常)

4
6
in 2
in 5
out
in 9
out
in 66

测试结果: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁岁岁平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值