# include <stdio.h>
# include <malloc.h>
//隊(duì)列的特點(diǎn)是 =》先進(jìn)先出
//所以 出列是從頭元素出列
// 入列的從尾元素入列
typedef struct Queue
{
int * pBase;
int front; //出列 (隊(duì)列頭元素)
int rear; //入列 (隊(duì)列尾元素)
}QUEUE,* pQUEUE;
//初始化隊(duì)列
void init(pQUEUE pQ);
//是否滿的
bool is_full(pQUEUE pQ);
//入列
bool en_queue(pQUEUE pQ,int val);
//輸出隊(duì)列元素
void traverse(pQUEUE pQ);
//是否空格
bool is_empty(pQUEUE pQ);
//出列
bool out_queue(pQUEUE pQ,int * pVal);
int main(void)
{
Queue Q;
init(&Q);
en_queue(&Q,1);
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
en_queue(&Q,6);
en_queue(&Q,7);
traverse(&Q);
int val;
if(out_queue(&Q,&val)){
printf("出列成功 %d \n", val);
}
traverse(&Q);
return 0;
}
void init(pQUEUE pQ)
{
pQ->pBase = (int *)malloc(sizeof(int) * 6);
pQ->front = 0;
pQ->rear = 0;
}
bool is_full(pQUEUE pQ)
{
if((pQ->rear+1) % 6 == pQ->front) //不超過(guò)一圈||超過(guò)則表示已經(jīng)滿了
return true;
else
return false;
}
bool en_queue(pQUEUE pQ,int val) //入列數(shù)組尾元素入列
{
if( is_full(pQ) ){
return false;
}else{
pQ->pBase[pQ->rear] = val; //規(guī)定,入列時(shí)尾指針+1
pQ->rear = (pQ->rear+1) % 6; //循環(huán)隊(duì)列 (數(shù)組指向下一個(gè))|| 范圍只能在數(shù)組的大小之間,形成一個(gè)臆想的環(huán)狀結(jié)構(gòu) || 當(dāng)超過(guò)6則滿
return true;
}
}
void traverse(pQUEUE pQ)
{
int i = pQ->front;
while(i != pQ->rear) //只要不相等,就說(shuō)明還有元素未輸出
{
printf("%d ",pQ->pBase[i]);
i = (i+1) % 6; //在一個(gè)循環(huán)內(nèi)
}
printf("\n");
}
bool is_empty(pQUEUE pQ)
{
if(pQ->front == pQ->rear){
return true;
}else{
return false;
}
}
bool out_queue(pQUEUE pQ, int * pVal) //出列數(shù)組頭元素出列
{
if(is_empty(pQ)){
return false;
}else{
*pVal = pQ->pBase[pQ->front]; //規(guī)定,出列時(shí)頭指針+1
pQ->front = (pQ->front+1) % 6;
}
}
循環(huán)隊(duì)列結(jié)構(gòu)(C語(yǔ)言)
最后編輯于 :
?著作權(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ù)。
【社區(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)容
- 什么是隊(duì)列 隊(duì)列是一種很重要的數(shù)據(jù)結(jié)構(gòu),應(yīng)用非常廣泛,原則上所有跟時(shí)間又關(guān)系的操作都可以通過(guò)隊(duì)列來(lái)實(shí)現(xiàn),有...
- 補(bǔ)充內(nèi)容:基本數(shù)據(jù)類型轉(zhuǎn)化5/3=1(1)隱式轉(zhuǎn)化:float _f=int t/int _t1賦值號(hào)兩邊不同時(shí),...
- 隊(duì)列(queue),是先進(jìn)先出(FIFO, First-In-First-Out)的線性表。在具體應(yīng)用中通常用鏈表...
- 盼望著,盼望著,假期來(lái)了。讓我睡個(gè)懶覺(jué),讓我伸伸懶腰,讓我減減贅肉,讓我讀幾本好書(shū),讓我到大自然去!這么多空閑時(shí)光...