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

  • 循环队列是顺序队的一种,意在解决队首和队尾指针同同时等于MAXSIZE-1的时候,会发声假上溢的情况,利用循环队列解决了这个问题

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

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

/*
 * 学习时间:2018-10-11
 * 学习内容:数据结构之循环队列的实现
 * 学习人:田超
 * QQ:770925351
 * Email:[email protected]
 * 开发环境:Ubuntu 16.04 + CLion
 * */
#include 
#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 数据结构学习---循环队列的实现)