队列

来源:互联网 发布:12月份php好找工作吗 编辑:程序博客网 时间:2024/05/18 15:09

 循环队列


#include <stdio.h>#include <stdlib.h>#define QUEUE_TYPE inttypedef struct QUEUE{    QUEUE_TYPE *head;   //pointer start    int front;          //head    int rear;           //tail    int size;           //the real is [0 ~ size-1]}Queue;int create_queue(Queue *s, size_t size){    if ((s->head = (QUEUE_TYPE *)malloc(size * sizeof(QUEUE_TYPE))) == NULL)        return -1;      //failed    s->front = 0;    s->rear = 0;    s->size = size;    return 0;}void destroy_queue(Queue *s){    free(s->head);}int is_empty(Queue *s){    if (s->front == s->rear)        return 0;       //empty    else        return -1;      //not empty}int is_full(Queue *s){    if (((s->rear +1) % s->size) == s->front)        return 0;       //full    else        return -1;      //not full}/* * front for out * rear for in */int insert_queue(Queue *s, QUEUE_TYPE value){    if (is_full(s) == 0)        return -1;      //failed    s->head[s->rear] = value;    s->rear = (s->rear + 1) % s->size;    return 0;}int delete_queue(Queue *s, QUEUE_TYPE *value){    if (is_empty(s) == 0)        return -1;      //failed    *value = s->head[s->front];    s->front = (s->front + 1) % s->size;    return 0;           //success}int first_queue(Queue *s, QUEUE_TYPE *value){    if (is_empty(s) == 0)        return -1;          //empty queue, failed    *value = s->head[s->front];     return 0;               //success}


0 0
原创粉丝点击