<pre name="code" class="cpp"># include <stdio.h>
# include <malloc.h>
# define len 6 //隊列長度
typedef struct QUENE
{
int * pbase; //數據域
int front; //頭指針
int rear; //尾指針
}Quene,* quene;
void init_quene(quene que); //建立隊列
bool empty_quene(quene que); //判斷是否爲空
bool full_quene(quene que); //判斷釋放滿溢
bool on_quene(quene que,int val); //入隊
bool out_quene(quene que,int *val); //出隊
void traverse_quene(quene que); //遍歷輸出
int main (void)
{
int val;
quene que;
que = (quene)malloc(sizeof(Quene)); //爲指針變量que分配空間
init_quene(que);
on_quene(que,1);
on_quene(que,2);
on_quene(que,3);
on_quene(que,4);
traverse_quene(que);
out_quene(que,&val);
printf ("%d\n",val);
traverse_quene(que);
printf ("%d\n",val);
return 0;
}
void init_quene(quene que)
{
que->pbase = (int *)malloc(sizeof(int)*len); //爲循環隊列分配空間
que->front = 0;
que->rear = 0;
}
bool empty_quene(quene que)
{
if (que->front == que->rear)
return true;
else
return false;
}
bool full_quene(quene que)
{
if (que->front == (que->rear+1)%len)
return true;
else
return false;
}
bool on_quene(quene que,int val)
{
if (full_quene(que))
return false;
else
{
que->pbase[que->rear] = val;
que->rear = (que->rear+1)%len; //尾指針指向下移位置
return true;
}
}
bool out_quene(quene que,int *val)
{
if (empty_quene(que))
return false;
else
{
*val = que->pbase[que->front];
que->front = (que->front+1)%len; //頭指針指向下一位置
return true;
}
}
void traverse_quene(quene que)
{
int i;
i = que->front;
while(i != que->rear)
{
printf ("%d ",que->pbase[i]); //輸出隊列
i = (i+1)%len;
}
printf ("\n");
}
循環隊列--數組實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.