美文网首页数据结构和算法分析
2018-10-11 数据结构学习---循环队列的实现

2018-10-11 数据结构学习---循环队列的实现

作者: 回不去的温柔 | 来源:发表于2018-10-11 09:57 被阅读2次
    • 循环队列是顺序队的一种,意在解决队首和队尾指针同同时等于MAXSIZE-1的时候,会发声假上溢的情况,利用循环队列解决了这个问题

    • 判断是否队空,则看rear=front==0

    • 判断是否队满,则看(rear+1)%MAXSIZE==front

    /*
     * 学习时间:2018-10-11
     * 学习内容:数据结构之循环队列的实现
     * 学习人:田超
     * QQ:770925351
     * Email:770925351@qq.com
     * 开发环境:Ubuntu 16.04 + CLion
     * */
    
    #include <stdio.h>
    #define MAXSIZE 10
    #define TRUE 1
    #define ERROR 0
    
    typedef struct SqQueue
    {
        int front;                  //队首
        int rear;                   //队尾
        int data[MAXSIZE];          //数据域
    }SqQueue;
    
    void initQueue(SqQueue &qu)     //初始化队
    {
        qu.front=qu.rear=0;         //初始化队首
    }
    
    int isQueueEmpty(SqQueue qu)    //判断队是否为空
    {
        if(qu.front==qu.rear)
            return TRUE;
        else
            return ERROR;
    }
    
    int isQueueFull(SqQueue qu)     //判断队是否已满
    {
        if((qu.rear+1)%MAXSIZE==qu.front)
            return TRUE;
        else
            return ERROR;
    }
    
    int inQueue(SqQueue &qu,int x)  //入队
    {
        if(isQueueFull(qu))
            return ERROR;
    
        qu.rear=(qu.rear+1)%MAXSIZE;
        qu.data[qu.rear]=x;
    
        return TRUE;
    }
    
    int outQueue(SqQueue &qu,int &x) //出队
    {
        if(isQueueEmpty(qu))
            return ERROR;
    
        qu.front=(qu.front+1)%MAXSIZE;
        x=qu.data[qu.front];
    
        return TRUE;
    }
    
    int main() 
    {
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:2018-10-11 数据结构学习---循环队列的实现

        本文链接:https://www.haomeiwen.com/subject/zrwvaftx.html