mysql迴圈佇列 C語言實現 迴圈佇列

2021-10-20 23:10:03 字數 1825 閱讀 1916

#include

#include

#include

typedef struct queue

int * pbase ; //陣列

int front ; //頭

int rear ; //尾 rear不存放資料,所以rear前面的是最後乙個資料

}queue ;

void init_queue(queue * pq);

bool full_queue(queue * pq);

bool en_queue(queue * pq ,int val);

void show_queue(queue * pq) ;

bool is_empty(queue * pq);

bool out_queue(queue * pq,int * pval);

int main()

int val ;

queue q ;

init_queue(&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);

show_queue(&q);

if(out_queue(&q,&val))

printf("出隊成功,出隊的元素是:%d\n",val);

else

printf("出隊失敗!") ;

show_queue(&q) ;

void init_queue(queue * pq) //傳入的是 queue型的指標所以是queue *

pq->pbase =(int *)malloc(sizeof(int)*6);//建立了6個大小的陣列,實際上只能放5個

pq->rear = 0 ;

pq->front = 0 ;

//判斷迴圈佇列是否為滿:少用乙個元素如果(rear+1)%6 == front 則滿

bool full_queue(queue * pq)

if((pq->rear+1)%6==pq->front ) return true ;

else return false ;

bool en_queue(queue * pq ,int val)

if(full_queue(pq))

return false ;

else

pq->pbase[pq->rear] =val ;

pq->rear =(pq->rear+1)%6 ;

return true ;

void show_queue(queue * pq)

int i =pq->front ; //讓i=頭部序列

while(i!=pq->rear)

printf("%d ",pq->pbase[i]);

i=(i+1)%6;

printf("\n");

bool is_empty(queue * pq)

if(pq->rear == pq->front) return true ;

else return false ;

bool out_queue(queue * pq,int * pval)

if(is_empty(pq))

return false;

else

*pval=pq->pbase[pq->front];

pq->front=(pq->front+1)%6 ;

return true ;

迴圈佇列的C語言實現

迴圈佇列就是將佇列儲存空間的最後乙個位置繞到第乙個位置,形成邏輯上的環狀空間,供佇列迴圈使用。在迴圈佇列結構中,當儲存空間的最後乙個位置已被使用而再要進入隊運算時,只需要儲存空間的第乙個位置空閒,便可將元素加入到第乙個位置,即將儲存空間的第乙個位置作為隊尾。迴圈佇列可以更簡單防止偽溢位的發生,但佇列...

迴圈佇列 陣列 C語言實現

佇列的基本概念 include include define maxsize 50 設定佇列大小 define elementtype int 方便操作,這裡定義資料型別為 int typedef struct queue 初始化佇列 void init que queue q 引數為指標型別,下面...

C語言實現,順序佇列,迴圈佇列,和棧!

佇列是一種特殊的 線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元...