【C语言】循环队列

来源:互联网 发布:刷销量软件 编辑:程序博客网 时间:2024/06/05 05:05
/* * 循环队列 * */typedef struct {  int arr[SIZE];  int head;  int tail;  int num; //用来表示队列里的有效数字个数} queue;//初始化void queue_init(queue *p_queue) {    p_queue->head = 0;    p_queue->tail = 0;    p_queue->num = 0;}//清空void queue_deinit(queue *p_queue) {    p_queue->head = 0;    p_queue->tail = 0;    p_queue->num = 0;}//统计个数int queue_size(const queue *p_queue) {    return p_queue->num;    }//判断空int queue_empty(const queue *p_queue) {    return !(p_queue->num);}//判断满int queue_full(const queue *p_queue) {    return p_queue->num >=SIZE;}//向队列放数字int queue_push(queue *p_queue, int val) {    if(queue_full(p_queue)) {        return 0;    }    else {        p_queue->arr[p_queue->tail] = val;        p_queue->tail++;        p_queue->tail %= SIZE;//如果满了,求余为0,没有满则还是原来的        p_queue->num;        return 1;    }}//从队列获取数字,删除int queue_pop(queue *p_queue, int *p_num) {    if(queue_empty(p_queue)) {        return 0;    }    else {        *p_num = p_queue->arr[p_queue->head];        p_queue->head++;        p_queue->head %= SIZE;        p_queue->num--;            return 1;    }}//从队列获得数字,不会从队列里删除int queue_front(const queue *p_queue, int *p_num) {    if(queue_empty(p_queue)) {        return 0;    }     else {        *p_num = p_queue->arr[p_queue->head];        return 1;    }}