zoukankan      html  css  js  c++  java
  • TZOJ 数据结构实验--循环队列

    描述

    创建一个循环队列,队列元素个数为4。能够实现队列的初始化、入队列、出队列、求队列长度等操作。

    循环队列数据类型定义如下:

    typedef struct
    {

        int data[Max];
        int front;
        int rear;
    }SqQueue;

    部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

    int main()
    {
        SqQueue q;
        char ss[10]; 
        int x, sta,l; 
        InitQueue(&q); 
        while(scanf("%s", ss)!=EOF) 
        {
            if(strcmp(ss, "enter")==0)
            {
                scanf("%d", &x);
                sta= EnQueue(&q,x);
                if(sta==0)
                    printf("FULL
    "); 
            }
            else if(strcmp(ss, "length")==0)
            {
                l=QueueLength(q); 
                printf("%d
    ", l);
            }
            else
            {
                sta = DeQueue(&q,&x);
                if(sta==0)
                    printf("EMPTY
    "); 
                else
                    printf("%d
    ", x);
            } 
        }
        return 0;
    }

    输入

    输入数据由以下几种命令组成:

    (1)enter x:x入队列

    (2)del:出队列

    (3)length:求队列长度

    每个命令占一行,以EOF结束。

    输出 

    当执行enter操作时元素入队,若队满输出FULL。

    当执行del时输出出队的元素,若队为空,输出EMPTY。

    当。执行length时,输出队列长度。

    样例输入

     enter 3
    enter 15
    length
    del
    del
    del

    样例输出

    2
    3
    15
    EMPTY

    #include <stdio.h>
    #include <string.h>
    #define Max 5
    typedef struct
    
    {
        int data[Max];
        int front;
        int rear;
    }SqQueue;
    int InitQueue(SqQueue *q)
    {
        q->front=0;
        q->rear=0;
        return 1;
    }
    int QueueLength(SqQueue q)
    {
        return (q.rear-q.front+Max)%Max;
    }
    int EnQueue(SqQueue *q,int  x)
    {
        if((q->rear+1)%Max==q->front)
            return 0;
        else {
            q->data[q->rear]=x;
            q->rear=(q->rear+1)%Max;
            return 1;
        }
    }
    int DeQueue(SqQueue *q,int *x)
    {
        if((q)->front==(q)->rear)
            return 0;
        else {
            *x=q->data[q->front];
            q->front=(q->front+1)%Max;
            return *x;
        }
    }

     

  • 相关阅读:
    oracle转义用单引号
    【转】plsql 永久注册码适用个版本
    winform datagridview某一列设为自动宽度
    Allow windows service to "Interact with desktop"
    Format a Hard Drive in Csharp C#格式化总结
    Lib New
    大嫂的HTML
    ASP.NET 分页控件
    linux搭建常用命令(运行jar,查看进程)
    如何用navicat连接linux服务器上的mysql以及重启服务
  • 原文地址:https://www.cnblogs.com/andrew3/p/8911074.html
Copyright © 2011-2022 走看看