数据结构--循环队列算法

来源:互联网 发布:java解决死锁的方法 编辑:程序博客网 时间:2024/06/05 20:13
#include<stdio.h> #include<malloc.h>#include<stdlib.h>typedef struct Queue{int * pBase;int front;int rear;}QUEUE;void init(QUEUE *);bool en_queue(QUEUE *,int val);void traverse_queue(QUEUE *); bool full_queue(QUEUE *);bool out_queue(QUEUE *, int *);bool emput_queue(QUEUE * );int main(void){Queue Q;init(&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);en_queue(&Q,8);traverse_queue(&Q);int val;if(out_queue(&Q,&val)){printf("出队成功 元素是:%d\n",val);}else{printf("出队失败\n");}traverse_queue(&Q);system("pause");return 0;}void init(QUEUE *pQ){pQ->pBase = (int *)malloc(sizeof(int)*6);//指向一个数组 pQ->front = 0;pQ->rear = 0;}bool full_queue(QUEUE * pQ){if((pQ->rear+1)%6 == pQ->front)return true;elsereturn 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 traverse_queue(QUEUE * pQ){int i = pQ->front;while(i != pQ->rear){printf("%d ",pQ->pBase[i]);i = (i+1)%6;}printf("\n");return;} bool emput_queue(QUEUE * pQ){if(pQ->front == pQ->rear)return true;elsereturn false;}bool out_queue(QUEUE * pQ, int *pVal){if(emput_queue(pQ)){return false;}else{*pVal = pQ->pBase[pQ->front];pQ->front = (pQ->front+1)%6;return true;}}

0 0
原创粉丝点击