C语言实现数组队列

#include <iostream>

#define QUEUE_SIZE 20

typedef struct queue
{
    unsigned int array[QUEUE_SIZE];
    int front;
    int rear;
    int counter;
} ARRAY_QUEUE_S;

void init_queue(ARRAY_QUEUE_S *_queue)
{
    _queue->front = 0;
    _queue->rear = -1;
    _queue->counter = 0;
    printf("init a queue successfully!\n");
}

int in_queue(ARRAY_QUEUE_S *_queue, int _element)
{
    if (_queue->counter >= QUEUE_SIZE){
        printf("the queue is full!\n");
        return 0;
    }else{
        _queue->rear = (_queue->rear + 1) % QUEUE_SIZE;
        _queue->array[_queue->rear] = _element;
        _queue->counter++;
        printf("in queue an element %d\n", _element);
        return 1;
    }
}

int out_queue(ARRAY_QUEUE_S *_queue, int *_element)
{
    if (0 == _queue->counter){
        printf("the queue is empty!\n");
        return 0;
    }else{
        *_element = _queue->array[_queue->front];
        printf("out queue is %d\n", *_element);
        _queue->front = (_queue->front + 1) % QUEUE_SIZE;
        _queue->counter--;
        return 1;
    }
}

int main(int argc, char *argv[])
{
    int j;
    ARRAY_QUEUE_S queue;
    init_queue(&queue);
    for (int i = 0; i < 10; i++){
       if (0 == in_queue(&queue, i)){
           break;
       }  
    }
    for (int i = 0; i <= 10; i++){
       if (0 == out_queue(&queue, &j)){
           break;
       }  
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/lala0903/article/details/106485040