2018-10-11 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)---循環(huán)隊(duì)列的實(shí)現(xiàn)

  • 循環(huán)隊(duì)列是順序隊(duì)的一種,意在解決隊(duì)首和隊(duì)尾指針同同時(shí)等于MAXSIZE-1的時(shí)候,會(huì)發(fā)聲假上溢的情況,利用循環(huán)隊(duì)列解決了這個(gè)問(wèn)題

  • 判斷是否隊(duì)空,則看rear=front==0

  • 判斷是否隊(duì)滿(mǎn),則看(rear+1)%MAXSIZE==front

/*
 * 學(xué)習(xí)時(shí)間:2018-10-11
 * 學(xué)習(xí)內(nèi)容:數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊(duì)列的實(shí)現(xiàn)
 * 學(xué)習(xí)人:田超
 * QQ:770925351
 * Email:770925351@qq.com
 * 開(kāi)發(fā)環(huán)境:Ubuntu 16.04 + CLion
 * */
#include <stdio.h>
#define MAXSIZE 10
#define TRUE 1
#define ERROR 0

typedef struct SqQueue
{
    int front;                  //隊(duì)首
    int rear;                   //隊(duì)尾
    int data[MAXSIZE];          //數(shù)據(jù)域
}SqQueue;

void initQueue(SqQueue &qu)     //初始化隊(duì)
{
    qu.front=qu.rear=0;         //初始化隊(duì)首
}

int isQueueEmpty(SqQueue qu)    //判斷隊(duì)是否為空
{
    if(qu.front==qu.rear)
        return TRUE;
    else
        return ERROR;
}

int isQueueFull(SqQueue qu)     //判斷隊(duì)是否已滿(mǎn)
{
    if((qu.rear+1)%MAXSIZE==qu.front)
        return TRUE;
    else
        return ERROR;
}

int inQueue(SqQueue &qu,int x)  //入隊(duì)
{
    if(isQueueFull(qu))
        return ERROR;

    qu.rear=(qu.rear+1)%MAXSIZE;
    qu.data[qu.rear]=x;

    return TRUE;
}

int outQueue(SqQueue &qu,int &x) //出隊(duì)
{
    if(isQueueEmpty(qu))
        return ERROR;

    qu.front=(qu.front+1)%MAXSIZE;
    x=qu.data[qu.front];

    return TRUE;
}

int main() 
{
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容