当前位置: 首页 > news >正文

栈的输入与输出方式

//队列:先进先出

//

#include "head.h"

#define SIZE 5

typedef struct queue

{

        int *buf; //用于存储数据,整个队列中所有数据都存放在这

        int x; //用于记录数据进队列时的下标

        int y; //用于记录数据出队列时的下标

        int size; //记录当前队列的容量

}QUEUE;

QUEUE*queue init()

{

        QUEUE*que=(QUEUE*)malloc (sizeof(QUEUE));

        que->buf=(int*)calloc(sizeof(int));

        

        que->x=0;

        que->y=0;

        que->size=SIZE;

        return que;

}

//向队列中存入数据

void queue push(QUEUE*q,int data)

{

        int num=q-x%q-size;

        q-buf[num]=data;

        q->x++; //实际记录的是进入队列的元素个数

}

//从队列中取出数据

void queue pop(QUEUE*q,int*data)

{

        //没有进入队列的元素

        if(q-x==0)

      {

                return;

       }

        int num;

        if(q-x>q->size)

        {

                //当队列中的元素的个数大于q->size时,产生溢出。

                //队列头的元素溢出不存在

                num=(q->y+q->x-q>size)%q->size;

        }

        else

 {

                //没有产生溢出时

        num=q-y%q-size;

  }

        *data=q->buf[num];

        q->y++;

}

void queue display(QUEUE*q)

{

        for(int i=0;i<q->size;i++)

        {

                printf("%d",q-buf[i]);

        }

        printf("\n");

}

int main(int argc,char*argv[])

{

        QUEUE*que=queue init();

        queue push(que,1);

        queue push(que,2);

        queue push(que,3);

        queue push(que,4);

        queue push(que,5);

        queue push(que,6);

        queue push(que.7);

        queue push(que,8);

        queue push(que,9);

        queue push(que,10);

        queue push(que,11);

        queue push(que,12);

        queue display(que);

        int data;

        queue pop(que,&data);

        printf("%d\n",data);

        queue pop(que,&data);

        printf("%d\n",data);

        

        queue pop(que,&data);

        printf("%d\n",data);

        queue  display(que);

        return 0;

}

http://www.lryc.cn/news/611121.html

相关文章:

  • 《算法导论》第 4 章 - 分治策略
  • Python Day23程序、进程、线程及多线程实现全解析 例题分析
  • 星图云开发者平台赋能商储油安全管控数字化转型
  • 为什么要选择时序数据库IoTDB?
  • Python爬虫08_Requests聚焦批量爬取图片
  • Pandas 入门:数据分析的得力工具
  • 嵌入式硬件中运放内部底层分析
  • 基于深度学习的医学图像分析:使用CycleGAN实现医学图像风格转换
  • 后量子时代已至?中国量子加密技术突破与网络安全新基建
  • 关于npx react-native run-android下载进程缓慢以及进程卡壳等问题的解决方案。
  • Java 大视界 -- Java 大数据在智能医疗电子病历数据分析与临床决策支持中的应用(382)
  • iOS混淆工具有哪些?技术演进与选型趋势全景解析
  • 企业如何用现代数仓架构挖掘新业务盈利点?AllData产品从目标、路径、结果给出答案
  • Go语言实战案例:使用sync.Mutex实现资源加锁
  • 查看 Redis 某个数据库的内存占用
  • 【前端】网站favicon图标制作
  • 力扣-208.实现Trie(前缀树)
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(六)
  • Linux-Day11.WEB服务,虚拟主机
  • VUE丢失long类型精度,使用 json-bigint 库解析大整数
  • 人工智能领域、图欧科技、IMYAI智能助手2025年7月更新月报
  • 暑期算法训练.14
  • 关于如何SecureCRT软件连接开发板后默认显示大字体,且重启开发板或重新连接时不会重置的方法
  • Android原生项目集成Flutter模块极简指南
  • Linux学习-数据结构(链表)
  • 深入浅出:Ajax 与 Servlet 实现前后端数据交互
  • 01-数据结构
  • ES(Elasticsearch)进程掉线(节点脱离集群)问题
  • 18-Chapter03-Example05
  • Ubuntu24.04环境下非DOCKER方式安装Mysql5.7