#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 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元...