用C语言实现简单循环队列结构 Mar 21, 2015 用C实现简单循环队列结构 /* * 用C实现简单循环队列结构 * * 循环队列的类型定义如下: * typedef struct{ * valuetype data[MAXSIZE]; [>数据的存储区<] * int font, rear; [>队首队尾<] * int num; [>队列中元素的个数<] * }Circular_Queue; * 循环队列常用函数如下: * (1)Circular_Queue * Init_CirQueue(): 初始化队列 * (2)int In_CirQueue(Circular_Queue *q, valuetype x): 将元素x插入队列q的队尾,若成功返回1,否则返回0 * (3)int Out_CirQueue(Circular_Queue *q, valuetype *x): 取出队列q队首位置的元素,若成功返回1,否则返回0 *//*程序代码:*/#include <stdio.h>#include <malloc.h>#define MAXSIZE 100typedef int valuetype;typedef struct{ valuetype data[MAXSIZE]; /*数据的存储区*/ int font, rear; /*队首队尾*/ int num; /*队列中元素的个数*/}Circular_Queue;Circular_Queue * Init_CirQueue(){ Circular_Queue *q = (Circular_Queue*)malloc(sizeof(Circular_Queue)); q->font = q->rear = MAXSIZE-1; q->num = 0; return q;}int In_CirQueue(Circular_Queue *q, valuetype x){ if(q->num == MAXSIZE) return 0; /*队满,不能入队*/ else { /*q->rear = (q->rear+1)%MAXSIZE;*/ q->data[q->rear] = x; q->rear = (q->rear+1)%MAXSIZE; q->num++; return 1; }}int Out_CirQueue(Circular_Queue *q, valuetype *x){ if(q->num == 0) return 0; /*队空*/ else{ *x = q->data[q->font]; q->font = (q->font+1)%MAXSIZE; q->num--; return 1; }}int main(){ Circular_Queue *queue = Init_CirQueue(); int x=0; for(int i=0;i<10;++i) { if(!In_CirQueue(queue, i)) break; } while(Out_CirQueue(queue, &x)) printf("%d ",x); printf("\n"); return 0;}