循环队列--数组实现

来源:互联网 发布:嘉实优化红利股票 编辑:程序博客网 时间:2024/05/22 06:21
<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;elsereturn false;}bool full_quene(quene que){if (que->front == (que->rear+1)%len)return true;elsereturn 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");}


                                             
0 0
原创粉丝点击