• 通用循环队列


    /*********************************************************************************************************
      queue
    *********************************************************************************************************/
    struct queue {
        uint32_t max_size;
        uint8_t  **pbase;
        uint32_t front;
        uint32_t rear;
    };
    
    static int queue_init(struct queue *queue, int size)
    {
        queue->pbase = bios_malloc(sizeof(uint8_t *)*size);
        if(NULL == queue->pbase) {
            bios_err(": malloc error
    ");
            return -1;
        }
        queue->max_size = size;
        queue->front = 0;
        queue->rear = 0;
    
        return 0;
    }
    
    static int queue_is_empty(struct queue *queue)
    {
        if(queue->front == queue->rear) {
            return 1;
        } else {
            return 0;
        }
    }
    
    static int queue_is_full(struct queue *queue)
    {
        if((queue->rear +1)%queue->max_size == queue->front) {
            return 1;
        } else {
            return 0;
        }
    }
    
    
    static int queue_in(struct queue *queue, uint8_t *val)
    {
        if(queue_is_full(queue)) {
            bios_log("fe rx queue full
    ");
            return 0;
        } else {
            //bios_log("queue in %0x
    ", val);
            queue->pbase[queue->rear]= val;
            queue->rear=(queue->rear+1)%queue->max_size;
            return 1;
        }
    }
    
    static int queue_out(struct queue *queue, uint8_t **val)
    {
        if(queue_is_empty(queue)){
            return 0;
        } else {
            *val = queue->pbase[queue->front];
            //bios_log("queue out %0x
    ", *val);
            queue->front=(queue->front+1)%queue->max_size;
            return 1;
        }
    }
  • 相关阅读:
    基础练习 高精度加法
    基础练习 阶乘计算
    基础练习 闰年判断
    基础练习 01字串
    基础练习 字母图形
    基础练习 数列特征
    基础练习 杨辉三角形
    基础练习 特殊的数字
    基础练习 回文数
    Codeforces 417A Elimination
  • 原文地址:https://www.cnblogs.com/mic-chen/p/14420014.html
Copyright © 2020-2023  润新知