循环队列代码演示

循环队列代码掩饰

/*
    循环队列代码
*/
#include <stdio.h>
#include <malloc.h>

typedef int bool;
#define false 0
#define true 1

//循环队列结构体
typedef struct Queue
{
    int *pBase;
    int front;
    int rear;
}Queue;

int glength;  //队列长度

//队列这种数据结构中的一些功能函数
void init_queue(Queue *queue);
bool enter_queue(Queue *queue, int val);
void show_queue(Queue *queue);
bool full_queue(Queue *queue);
bool out_queue(Queue *queue, int *val);
bool empty_queue(Queue *queue);

int main(void)
{
    Queue queue;
    int val;
    glength = 6;
    init_queue(&queue);
    enter_queue(&queue, 4);
    enter_queue(&queue, 5);
    enter_queue(&queue, 6);
    enter_queue(&queue, 1);
    show_queue(&queue);
    out_queue(&queue, &val);
    show_queue(&queue);
    printf("出队的元素值为:%d\n", val);
    return 0;
}

/*
    函数名:init_queue
    作用:初始化一个队列
    输入:Queue *queue
    输出:无
*/
void init_queue(Queue *queue)
{
    queue->pBase = (int *)malloc(sizeof(int) * glength);
    if (queue->pBase == NULL)
    {
        return;
    }
    queue->front = queue->rear = 0;
    return;
}

/*
    函数名:enter_queue
    作用:相对列中加入一个元素
    输入:Queue *queue, int val(加入队列中的值)
    输出:true/false(加入队列是否成功)
*/
bool enter_queue(Queue *queue, int val)
{
    if (full_queue(queue))
    {
        printf("队列已满\n");
        return false;
    }
    queue->pBase[queue->rear] = val;
    queue->rear += 1;
    return true;
}

/*
    函数名:empty_queue
    作用:检测队列是否为空
    输入:Queue *queue
    输出:true(队列为空)/false
*/
bool empty_queue(Queue *queue)
{
    if (queue->rear == queue->front)
    {
        return true;
    }
    else
        return false;
}

/*
    函数名:full_queue
    作用:检测队列是否已满
    输入:Queue *queue
    输出:true(队列已满)/false
*/
bool full_queue(Queue *queue)
{
    if ((queue->rear + 1) % glength == queue->front)
    {
        return true;
    }
    else
        return false;
}

/*
    函数名:show_queue
    作用:展示队列中的元素
    输入:Queue *queue
    输出:无
*/
void show_queue(Queue *queue)
{
    int p;
    if (empty_queue(queue))
    {
        printf("队列为空\n");
        return;
    }
    p = queue->front;
    printf("队列中的元素为:");
    while (p != queue->rear)
    {
        printf("%d、", queue->pBase[p]);
        p += 1;
    }
    printf("\n");
    return;
}

/*
函数名:out_queue
作用:从队列中出一个元素
输入:Queue *queue, int *val(承接出队列元素的数值)
输出:true/false(元素出队列是否成功)
*/
bool out_queue(Queue *queue, int *val)
{
    int p = queue->front;
    if (empty_queue(queue))
    {
        printf("队列为空\n");
        return false;
    }
    *val = queue->pBase[p];
    queue->front += 1;
    return true;
}

 

posted @ 2021-07-15 19:47  北极星!  阅读(142)  评论(0编辑  收藏  举报