c語言中循環隊列圖示,C語言實現循環隊列

本文目錄一覽:

C語言,請用數組作個循環隊列

a#include

“Stdio.h”

#include

stdlib.h

#include

“Conio.h”

#include

“malloc.h”

#define

TRUE

1

#define

FALSE

#define

INFEASIBLE

1

#define

OVERFLOW

-2

#define

OK

1

#define

ERROR

#define

MAXQSEZE

100

/*最大隊列長度*/

typedef

int

QElemType;

typedef

int

Status;

typedef

struct{

QElemType

*base;

/*初始化的動態分配存儲空間*/

int

front;

/*頭指針,若隊列不空,指向隊列頭元素*/

int

rear;

/*尾指針,若隊列不空,指向隊列尾元素的下一位置*/

}SqQueue;

Status

Queuelength(SqQueue

*Q){

/*構造一個空的循環隊列*/

Q-base=(QElemType

*)malloc(MAXQSEZE*sizeof(SqQueue));

if(!Q-base)

exit(OVERFLOW);

/*存儲分配失敗*/

Q-front=Q-rear=0;

return

OK;

}

Status

EnQueue(SqQueue

*Q,QElemType

e){

/*插入元素e為Q的新的隊尾元素*/

if((Q-rear+1)%MAXQSEZE==Q-front)

return

ERROR;/*隊列滿*/

Q-base[Q-rear]=e;

Q-rear=(Q-rear+1)%MAXQSEZE;

return

OK;

}

Status

DeQueue(SqQueue

*Q,QElemType

*e){

/*若隊列不空,則刪除Q的隊頭元素,用e返回其值*/

/*否則返回ERROR*/

if(Q-front==Q-rear)

return

ERROR;

*e=Q-base[Q-front];

Q-front=(Q-front+1)%MAXQSEZE;

return

OK;

}

Status

GetHead(SqQueue

*Q,QElemType

*e){

/*隊列不為空用e返回Q的頭元素,並返回OK,否則返回ERROR*/

if(Q-front==Q-rear)

return

ERROR;

*e=Q-base[Q-front];

return

OK;

}

Status

QueueEmpty(SqQueue

*Q){

/*隊列為空時返回OK否則返回FALSE*/

if(Q-front==Q-rear)

return

OK;

return

FALSE;

}

void

yanghuiTriangle(int

n){

/*打印輸出楊輝三角的錢n(n0)行*/

SqQueue

Q;

char

ch=’

‘;

int

i,k;

QElemType

s,e;

FILE

*fq;

if((fq=fopen(“output.txt”,”w”))==NULL){

/*打開寫入文件*/

printf(“error

on

open\n”);

exit

(1);

}

Queuelength(Q);

/*創建空的隊列*/

for(i=1;in;i++)

{

printf(“

“);

fputc(ch,fq);}

/*輸出n個空格以保持三角形的隊形*/

printf(“1\n”);

fprintf(fq,”%d\n”,1);

EnQueue(Q,0);

/*添加第一行末尾的行分界0併入隊*/

EnQueue(Q,1);

/*第二行的兩個1值入隊列*/

EnQueue(Q,1);

k=2;

while(kn){

/*通過循環隊列輸出第2行到第n-1行的值*/

for(i=1;i=n-k;i++)

{printf(“

“);

fputc(ch,fq);}

/*輸出n-k個空格以保持三角形*/

EnQueue(Q,0);

do{

/*輸出第k行,計算第k+1行*/

DeQueue(Q,s);

GetHead(Q,e);

if(e)

/*若e為非行分界值0,則打印輸出e的值,並加一空格*/

{printf(“%d

“,e);

fprintf(fq,”%d%c”,e,ch);

}

else

{

printf(“\n”);

fputc(‘\n’,fq);}

/*回車換行,為下一行輸出做準備*/

EnQueue(Q,s+e);

/*計算所得抵k+1行的值入隊列*/

}while(e!=0);

k++;

}

DeQueue(Q,e);

/*行界值「0「出隊列*/

while(!QueueEmpty(Q)){

/*單獨處理第n行的值的輸出*/

DeQueue(Q,e);

{

printf(“%d

“,e);

fprintf(fq,”%d%c”,e,ch);

}

}

}

int

main(void)

{

FILE

*

fp;

QElemType

n;

if((fp=fopen(“input.txt”,”r”))==NULL){

/*打開寫入文件*/

printf(“error

on

open\n”);

exit

(1);

}

fscanf(fp,”%d”,n);

/*讀入n*/

fclose(fp);

yanghuiTriangle(n);

getch();

return

0;

}

用一個文件輸入一個N,這個數位楊輝三角的行數上面是用循環隊列做的,你看看

c語言循環隊列

s表示的是循環隊列的成員個數

front是隊列的頭指針

rear是隊列的尾指針

s=0表示循環隊列中的成員個數為0,當然也就是隊列為空了

s=1表示循環隊列中的成員個數為1,front=rear說明隊列的頭指針和尾指針都指向同一個隊列成員,也就是說這個/隊列已經封閉了(首尾已經相接),那麼這個隊列也就滿了

front=rear=m其中的m也不曉得是什麼了

這個m就是具體的成員的地址了,front=rear=m,m就成了當前循環隊列中唯一的成員

二級c語言,隊列、循環隊列是什麼?

隊列是一種特殊的線性表,循環隊列是將向量空間想像為一個首尾相接的圓環。

1、隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。

2、循環隊列是將向量空間想像為一個首尾相接的圓環,並稱這種向量為循環向量。存儲在其中的隊列稱為循環隊列。 在順序隊列中,當隊尾指針已經到數組的上界,不能再有入隊操作,但其實數組中還有空位置,這就叫做「假溢出」,解決假溢出的途徑—-採用循環隊列。

擴展資料

判斷隊列滿的情況:

1、count來計數;通常使用count

Count等於隊列的MAXSIZE

2、Flag標誌 int

入隊列 flag=1 出隊列flag=0

Front=rearflag==0

3、把一個存儲單元空出來,不存放數據

Rear+1==front

注意事項:(不要) 順序結構,SeqQueue myQueue;

參考資料來源:百度百科—循環隊列

C語言用數組實現循環隊列的入隊出隊

//定義一個int型數組que,長度為N(常量切大於2).

int que[N];

int rear=0,front=0; //隊尾 隊頭

判斷隊列已滿:

if((front+1)%N==rear%N)  //成立則隊列已滿

判斷隊列為空

if((rear==front)) //成立則隊列空

入隊(一般在入隊前判斷隊列是否已滿)

//將val入隊

que[front++]=val;

front%=N;

出隊(一般在出隊前判斷隊列是否為空)

rear=(rear+1)%N;

下一個要出隊的元素(一般先判斷是否為空)

que[rear];

C語言循環隊列問題求教

這個並沒有錯,可以根據圖分開來算

front指針指向存儲元素位置,rear指針指向第一個未存儲元素位置

首先,隊列上半部分,有元素,m-30+1;

其次,隊列下半部分,有元素,10-1;

所以,總共的元素個數為total = m-30+1+10-1 = m-20

原創文章,作者:EGYO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/148127.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EGYO的頭像EGYO
上一篇 2024-11-02 13:15
下一篇 2024-11-02 13:15

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • RabbitMQ和Yii2的消息隊列應用

    本文將探討RabbitMQ和Yii2之間的消息隊列應用。從概念、安裝和配置、使用實例等多個方面詳細講解,幫助讀者了解和掌握RabbitMQ和Yii2的消息隊列應用。 一、Rabbi…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論