循环队列代码演示

本文总字数:2520,阅读预计需要:6分钟

循环队列代码掩饰

复制代码
/*
    循环队列代码
*/
#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 @   北极星!  阅读(148)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示