#3902. 【模板】循环队列

【模板】循环队列

题目描述

实现循环队列的基本操作:判断队列是否为空、入队、出队。

注意:队列长度为10,且本题将牺牲一个单元用于队列判断。

输入格式

第一行输入一个正整数 tt,表示接下来有 tt 个操作。

接下来 tt 行,每行一个操作,为以下几种之一,具体请查看样例:

  • 11 判断队列是否为空,如果为空输出 truetrue,不为空输出 falsefalse
  • 22 xx 入队一个元素 xx,入队成功输出 truetrue,入队失败输出 falsefalse
  • 33 出队一个元素,如果出队成功输出它的值,出队失败输出 falsefalse

输出格式

每个操作需要换行,具体请查看样例。

样例

22
1
2 301
2 407
3
2 64
3
3
3
2 38
2 17
2 69
3
2 78
2 23
2 96
2 507
2 985
2 211
2 658
2 793
1
3
true
true
true
301
true
407
64
false
true
true
true
38
true
true
true
true
true
true
true
false
false
17

示例代码

  1. Python3Python3
# Author: guke

MaxSize = 10

class SqQueue(object):

    def __init__(self):
        self.data = [0 for _ in range(MaxSize)]
        self.front = self.rear = 0

    def EnQueue(self, x):
        if (self.rear + 1) % MaxSize == self.front:
            return 'false'
        self.data[self.rear] = x
        self.rear = (self.rear + 1) % MaxSize
        return 'true'

    def DeQueue(self):
        if self.rear == self.front:
            return 'false'
        x = self.data[self.front]
        self.front = (self.front + 1) %  MaxSize
        return x

    def is_empty(self):
        if self.rear == self.front:
            return 'true'
        else:
            return 'false'


if __name__ == "__main__":
    q = SqQueue()
    t = int(input())
    for _ in range(t):
        ali = [int(__) for __ in input().split()]
        if ali[0] == 1:
            print(q.is_empty())
        elif ali[0] == 2:
            print(q.EnQueue(ali[1]))
        else:
            print(q.DeQueue())