静态队列

来源:互联网 发布:怎么样开淘宝店视频 编辑:程序博客网 时间:2024/06/05 09:43
/* * main.c * *  Created on: 2016-10-17 *      Author: llf05 */# include <stdio.h># include <stdlib.h># include <stdbool.h>typedef struct {int *data;  // int data[N];  也可以这样写int rear, front;} Queue, *pQueue;void init(pQueue sq){sq->data= (int *)malloc(sizeof(int) * 6);sq->front = sq->rear = 0;}bool full_queue(pQueue sq){if ((sq->rear+1)%6 == sq->front)return true;elsereturn false;}void en_queue(pQueue sq, int val) //入队{if (full_queue(sq)){return ;}else{sq->data[sq->rear] = val;sq->rear = (sq->rear+1)%6;return ;}}void show_queue(pQueue sq){int i = sq->front;while (i != sq->rear){printf("%d ", sq->data[i]);i = (i+1) % 6;}printf("\n");return ;}bool em_queue(pQueue sq){if(sq->front == sq->rear){return true;}elsereturn false;}void out_queue(pQueue sq, int *val){if (em_queue(sq)){return;}else{*val = sq->data[sq->front];sq->front = (sq->front+1)%6;}}int main(){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);show_queue(&q);int val;out_queue(&q, &val);printf("out data is %d\n", val);show_queue(&q);return 0;}

0 0