Tag:循环队列

Tag (循环队列)'s result:

Circular queue

将顺序队列想象成一个环,约定以队列头指针在队列尾指针的下一位置上作为队列满的状态,需要空出一个位置给头指针。 #include <stdio.h> #include <stdlib.h> typedef struct { int queue[10]; int front; int rear; } qqtype; //初始化 void init(qqtype *q) { q->front = 0; q->rear = 0; } int enterline(qqtype *q,int x) { if ((q->rear + 1) % 10==q->front) //如果尾指针移到了头指针前一个位置,队列就满了(1~9共9个元素,空了个位置),rear最大为9 return 0; else { q->rear = (q->rear + 1) % 10; q->queue[q->rear] = x; //下标从1开始了! return 1; } } int main() { int ch,sign; qqtype *q; q = (qqtype *)malloc(sizeof(qqtype)); init(q); printf(“creat C success\n”); printf(“please input the data\n”); scanf(“%d”,&ch); while (ch!=-1) { if ((sign = enterline(q,ch))!=1) break; scanf(“%d”,&ch); } printf(“output the data\n”); while (q->front!=q->rear) //front为0 { q->front = (q->front+1) % 10; printf(“%d “,q->queue[q->front]); } printf(“\n”); return 1; }