1667_队列应用:模拟排队

2022-5-16 18:17| 发布者: Hocassian| 查看: 43| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-2-8950494530599-Problem List-采集的数据-后羿采集器.html

Pro.ID

1667

Title

队列应用:模拟排队

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=1667

AC

44

Submit

145

Ratio

30.34%

时间&空间限制

  • Time Limit: 20000/10000 MS (Java/Others)     Memory Limit: 262144/262144 K (Java/Others)
  • 描述

    定义队列Queue的数据结构如下:

    #define MAX_SIZE 1000

    /// 节点基础数据类型
    typedef struct Node {
        int  id;  /// 员工编号
        char  name[20];  /// 员工名字
    } mytype;

    /// 循环队列数据结构
    typedef struct MyQUEUE {
        mytype data[ MAX_SIZE ];  /// 队列元素存放的数组
        int head, tail;
     /// 队首、队尾指针
    } Queue;

    需要用到的函数原型如下:

    void init ( Queue &q )  /// 初始化队列q

    bool full ( Queue &q )  /// 判断队列q是否满

    bool empty ( Queue &q )  /// 判断队列q是否空

    int enQueue ( Queue &q, mytype e )  /// 元素e进入队列q

    int getHead ( Queue &q , mytype &e )  /// 求队首元素。如果存在,赋值给参数e

    int deQueue ( Queue &q )  /// 出队

    给出一个队列,执行下列给出的 3 种类型的操作:

    • 1 id name   :表示 员工编号为 id 、姓名为name的人进入队列。若队列满,无法执行1操作,则输出 (full) ,并丢弃该id和name。

    • 2    :表示队首人员出队。若队列空,无法执行2操作,则输出 (empty)

    • 3    :输出此刻队首人员的id和name 。若队列空,无法执行3操作,则输出 (none)

    输入

    队列长度规定为上述的MAX_SIZE 。

    输入第一行为一个正整数Q,表示有Q次操作。

    接下来Q行,每行是下列 3 种操作之一:

    1 id name

    2

    3

    其中,id是一个非负整数,表示员工编号,和 一个字符串 name 表示员工姓名。员工姓名字符串不含空格,0 < |name| < 20

    输出

    Description

    定义队列Queue的数据结构如下:

    #define MAX_SIZE 1000

    /// 节点基础数据类型
    typedef struct Node {
        int  id;  /// 员工编号
        char  name[20];  /// 员工名字
    } mytype;

    /// 循环队列数据结构
    typedef struct MyQUEUE {
        mytype data[ MAX_SIZE ];  /// 队列元素存放的数组
        int head, tail;
     /// 队首、队尾指针
    } Queue;

    需要用到的函数原型如下:

    void init ( Queue &q )  /// 初始化队列q

    bool full ( Queue &q )  /// 判断队列q是否满

    bool empty ( Queue &q )  /// 判断队列q是否空

    int enQueue ( Queue &q, mytype e )  /// 元素e进入队列q

    int getHead ( Queue &q , mytype &e )  /// 求队首元素。如果存在,赋值给参数e

    int deQueue ( Queue &q )  /// 出队

    给出一个队列,执行下列给出的 3 种类型的操作:

    • 1 id name   :表示 员工编号为 id 、姓名为name的人进入队列。若队列满,无法执行1操作,则输出 (full) ,并丢弃该id和name。

    • 2    :表示队首人员出队。若队列空,无法执行2操作,则输出 (empty)

    • 3    :输出此刻队首人员的id和name 。若队列空,无法执行3操作,则输出 (none)

    Input

    队列长度规定为上述的MAX_SIZE 。

    输入第一行为一个正整数Q,表示有Q次操作。

    接下来Q行,每行是下列 3 种操作之一:

    1 id name

    2

    3

    其中,id是一个非负整数,表示员工编号,和 一个字符串 name 表示员工姓名。员工姓名字符串不含空格,0 < |name| < 20

    Output

    对给出的每个操作,执行相应动作。若要输出结果的,一个操作输出一行结果。

    Sample Input

    9
    1 1 Tom
    1 3 Alice
    2
    1 2 Bob
    3
    2
    2
    3
    2

    Sample Output

    3 Alice
    (none)
    (empty)

    Hint

    下面提供 循环队列 的实现。请看懂代码原理后,敲出代码,而不是复印机。

    Source
    Author

    样例输入

    9
    1 1 Tom
    1 3 Alice
    2
    1 2 Bob
    3
    2
    2
    3
    2

    样例输出

    3 Alice
    (none)
    (empty)

    提示

    下面提供 循环队列 的实现。请看懂代码原理后,敲出代码,而不是复印机。

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部