C语言实现队列

队列:先进先出的一种数据结构。

代码在Visual 2008的C++下编译的,如下:

typedef struct
{
    HRINT32U pAddr;
}MyQueue;//队列数据类型
#define  MaxNum 10 //队列最大容量10
MyQueue m_queue[MaxNum];//队列数组
HRINT8U InputAddr = 0;//入队地址
HRINT8U OuputAddr = 0;//出队地址
HRINT8U NowNum = 0;//当前队列总数
/*
  * 描述     :入队
  * 函数名:HRINT8U Insert_Queue(MyQueue *pInAddr)
  * 输入        :pInAddr 队列指针
  * 输出        :0-插入成功,1-失败(队列已满)
*/
HRINT8U Insert_Queue(MyQueue *pInAddr)
{
    if(NowNum >= MaxNum)//判断队列是否存满
    {
        return 1;
    }
    else
    {
        //do nothing
    }
    m_queue[InputAddr++] = *pInAddr;
    if(InputAddr >= MaxNum)
    {
        InputAddr = 0;
    }
    else
    {
        //do nothing
    }
    NowNum++;
    return 0;
}
/*
  * 描述     :出队
  * 函数名:HRINT8U Insert_Queue(MyQueue *pInAddr)
  * 输入        :pInAddr 队列指针
  * 输出        :0-出队成功,1-失败(队列为空)
*/
HRINT8U Out_Queue(MyQueue *pOutAddr)
{
    if(NowNum == 0)//判断队列是否为空
    {
        return 1;
    }
    else
    {
        //do nothing
    }
    *pOutAddr = m_queue[OuputAddr++];
    if(OuputAddr >= MaxNum)
    {
        OuputAddr = 0;
    }
    else
    {
        //do nothing
    }
    NowNum--;
    return 0;
}

void main()
{
    HRINT8U i;
    HRINT8U SelectNum;
    MyQueue InputTest;
    while(1)
    {
        printf("\n请输入数字选择相应的操作:1入队 2出队\n");
        scanf("%d",&SelectNum);
        switch (SelectNum)
        {
        case 1:
            printf("\n请输入插入队列的值:");
            scanf("%ld",&InputTest.pAddr);
            if(!Insert_Queue((MyQueue *)&InputTest))
            {
                printf("\n插入队列成功!\n");
            }
            else
            {
                printf("\n队列已满!\n");
            }
            break;
        case 2:
            printf("\n当前入队位置%d,当前出队位置%d\n",InputAddr,OuputAddr);
            printf("当前队列的内容如下\n");
            for(i=0;i<MaxNum;i++)
            {
                printf("%ld  ",m_queue[i].pAddr);
            }
            if(!Out_Queue((MyQueue *)&InputTest))
            {
                printf("\n出队成功!\n");
                printf("\n出队值%ld\n",InputTest.pAddr);
            }
            else
            {
                printf("\n队列为空!\n");
            }
            break;
        default:
            printf("无此操作!!!");
        }    
    }
    system("pause");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZeroMQ的C语言实现是通过使用C语言库czmq来实现队列功能的。czmq是ZeroMQ的一个高级封装库,它提供了一组易于使用的API,用于在生产者和消费者之间建立队列通信。 使用ZeroMQ的C语言实现队列的主要特点是,不需要搭建队列环境,只需引入czmq库,并在生产者和消费者代码中调用相应的API即可。与传统的BSD开发不同,ZeroMQ中的Server和Client启动顺序没有要求。这意味着先启动Server还是先启动Client并不影响队列的正常运行。 总结起来,通过引入czmq库,并调用相应的API,ZeroMQ的C语言实现提供了一种简单而灵活的方法来实现队列功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [消息队列zeromq的c语言安装包czmq-4.2.1版本](https://download.csdn.net/download/weixin_41803458/85046594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [转载 消息队列ZeroMQ C语言](https://blog.csdn.net/wc996789331/article/details/104404412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值