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

  • 循环队列是顺序队的一种,意在解决队首和队尾指针同同时等于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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容