首页 > 试题广场 >

猫狗队列

[编程题]猫狗队列
  • 热度指数:3544 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现一种猫狗队列的结构,要求如下:
1. 用户可以调用 add 方法将 cat 或者 dog 放入队列中
2. 用户可以调用 pollAll 方法将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出
3. 用户可以调用 pollDog 方法将队列中的 dog 按照进队列的先后顺序依次弹出
4. 用户可以调用 pollCat 方法将队列中的 cat 按照进队列的先后顺序依次弹出
5. 用户可以调用 isEmpty 方法检查队列中是否还有 dog 或 cat
6. 用户可以调用 isDogEmpty 方法检查队列中是否还有 dog
7. 用户可以调用 isCatEmpty 方法检查队列中是否还有 cat

输入描述:
第一行输入一个整数 n 表示 用户的操作总次数。

以下 n行 每行表示用户的一次操作

每行的第一个参数为一个字符串 s,若 s = “add”, 则后面接着有 “cat x”(表示猫)或者“dog x”(表示狗),其中的 x 表示猫狗的编号。


输出描述:
对于每个操作:

若为 “add”,则不需要输出。

以下仅列举几个代表操作,其它类似的操作输出同理。

若为 “pollAll”,则将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出。(FIFO),格式见样例。

若为 "isEmpty",则检查队列中是否还有 dog 或 cat, 为空则输出 “yes”, 否则输出 “no”。
示例1

输入

11
add cat 1
add dog 2
pollAll
isEmpty
add cat 5
isDogEmpty
pollCat
add dog 10
add cat 199
pollDog
pollAll

输出

cat 1
dog 2
yes
yes
cat 5
dog 10
cat 199

备注:

保证每个猫和狗的编号x都不相同且
保证没有不合法的操作

八点想吃🍞

let line=readline()
let dogQueue=[],catQueue=[]
let time=0
while(line=readline()){
    let [action,name,index]=line.split(" ")
    if(action=='add'){
        let num=parseInt(index)
        if(name=='cat'){
            catQueue.push({
                num,
                time
            })
        }else{
             dogQueue.push({
                num,
                time
            })
        }
        time++
    }else if(action=='pollAll'){
        while(dogQueue.length&&catQueue.length){
            if(dogQueue[0].time<catQueue[0].time){
                console.log("dog "+dogQueue.shift().num)
            }else{
                console.log("cat "+catQueue.shift().num)
            }
        }
        if(dogQueue.length&&catQueue.length==0){
            while(dogQueue.length)
            console.log("dog "+dogQueue.shift().num)
        }
        if(dogQueue.length==0&&catQueue.length){
            while(catQueue.length)
            console.log("cat "+catQueue.shift().num)
        }
    }else if(action=='pollDog'){
         while(dogQueue.length){
                console.log("dog "+dogQueue.shift().num)         
        }
    }else if(action=='pollCat'){
         while(catQueue.length){
                console.log("cat "+catQueue.shift().num)         
        } 
    }else if(action=='isEmpty'){
        console.log(dogQueue.length==0&&catQueue.length==0?'yes':'no') 
    }else if(action=='isDogEmpty'){
        console.log(dogQueue.length==0?'yes':'no') 
    }else{
        console.log(catQueue.length==0?'yes':'no') 
    }
}
编辑于 2021-06-24 22:17:32 回复(0)

问题信息

上传者:小小
难度:
1条回答 7879浏览

热门推荐

通过挑战的用户

查看代码
猫狗队列