//队列的链表式实现
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>     //现算表达式,如果为假,向stderr打印出错信息并通过abort终止程序typedef int QDateType;  //定义别名
int MaxSize = 8;  //定义别名
typedef struct QueueNode//结构体,队列中的元素:值和指向下个元素的指针
{QDateType val;struct QueueNode* next;
}QueueNode;typedef  struct Queue //队列
{QueueNode* head; //头指针QueueNode* tail; //尾指针
}Queue;
//队列初始化
void QueueInti(Queue* pq)
{assert(pq); //非空pq->head = pq->tail = NULL;
}
//队列销毁
void QueueDestory(Queue* pq)
{assert(pq);QueueNode* cur = pq->head;while (cur){QueueNode* next = cur->next;free(cur);cur = next;}pq->tail = pq->head = NULL;
}//队首删除元素
QueueNode* QueuePop(Queue* pq)
{assert(pq);assert(pq->head && pq->tail);QueueNode* delete = NULL;if (pq->head->next == NULL){delete = pq->head;free(pq->head);pq->head = pq->tail = NULL;}else{QueueNode* next = pq->head->next;delete = pq->head;free(pq->head);pq->head = next;}return delete;
}
//队列是否为空
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->head == NULL;
}
//取出队首元素-不删除
QDateType QueueFront(Queue* pq)
{assert(pq);assert(pq->head);return pq->head->val;
}
//取出队尾元素-不删除
QDateType QueueBack(Queue* pq)
{assert(pq);assert(pq->tail);return pq->tail->val;
}
//队列中元素数目
int QueueSize(Queue* pq)
{assert(pq);QueueNode* cur = pq->head;int count = 0;while (cur){cur = cur->next;count++;}return count;
}
//队尾插入元素
void QueuePush(Queue* pq, QDateType x)
{assert(pq);if(QueueSize(pq) == MaxSize){QueueNode* wq =  QueuePop(pq);if(wq == NULL){printf("当前队列为空");}else{printf("出队列元素:%d\n" , wq->val);}}QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));if (NULL == newNode){printf("malloc error\n");exit(-1);}newNode->val = x;newNode->next = NULL;if (pq->tail == NULL){assert(pq->head == NULL);pq->head = pq->tail = newNode;}else{pq->tail->next = newNode;pq->tail = newNode;}}
//队列中元素数目
void printQueue(Queue* pq)
{assert(pq);printf("\n输出队列中所有数据内容:");while (QueueSize(pq) >0){QueueNode* q= QueuePop(pq);printf("%d",q->val);}printf("\n");
}
int main()
{Queue q;QueueInti(&q);printf("输入-1结束当前输入。\n");  while (true){int a;printf("请输入入队数:");        scanf("%d",&a);if(a == -1){printf("结束时队列数据大小:%d",QueueSize(&q));printQueue(&q);return 0;}QueuePush(&q, a); }return 0;
}

使用c语言实现队列,最多8个数据。

c语言队列实现FIFO相关推荐

  1. Python 线程队列 Queue – FIFO - Python零基础入门教程

    目录 一.Python 线程队列分类 二.Python 线程先进先出队列 Queue 简介 三.Python 线程先进先出队列 Queue 常用函数 四.Python 线程先进先出队列 Queue 使 ...

  2. 【网络拥塞管理和避免(队列调度算法FIFO/SP/RR/WRR/DRR/MDRR/WDRR/WFQ)】

    目录 写在前面的话 网络拥塞及其对策 拥塞的产生 拥塞的位置 拥塞的影响 拥塞的管理和对策 队列及拥塞管理 队列调度算法 FIFO SP RR WRR DRR MDRR WDRR WFQ 拥塞避免 尾 ...

  3. 基于TIA博途的顺序队列(FIFO)先进先出SCL算法程序(V15版本)

    基于TIA博途的顺序队列(FIFO)先进先出SCL算法程序(V15版本) 顺序队列原理: 顺序队列是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出FIFO的特性 具体实现步骤可参考 ...

  4. 使用c语言实现的fifo程序,C语言实现标准FIFO

    C语言实现标准FIFO 说明: 本文在C语言中实现了标准FIFO,可以存储任意类型的数据.FIFO返回给应用模块的是一个int类型的索引值,本质是一个指针.通过这层封装,可以简化提供给应用模块的接口. ...

  5. 数据结构——队列(FIFO)

    数据结构--队列(FIFO) 队列的分类:顺序队列.链队列 顺序队列 在 FIFO 数据结构中,将首先处理添加到队列中的第一个元素.队列是典型的 FIFO 数据结构.插入(insert)操作也称作入队 ...

  6. c语言队列如何表示,队列的链式表示和实现(C语言)

    #include #include #define OK 1; #define ERROR 0; #define OVERFLOW 0; #define TURE 1; #define FALSE 0 ...

  7. c语言 队列 游戏,循环队列实现约瑟夫游戏(C语言版)

    #include #include typedef struct node { int *base; int front; int rear; }Node; /* 思路: *使用一个顺序循环队列来存放 ...

  8. java 先入先出,java_阻塞队列(FIFO先进先出)

    java_阻塞队列(FIFO先进先出) ArrayBlockingQueue:由数组结构组成的有界阻塞队列: LinkedBlockingQueue:由链表结构组成的有界阻塞队列(但大小默认值为:In ...

  9. C语言 队列(循环队列和链队初始化进出队等基本操作)

    目录 一.队列的定义 二.循环队列 1. 循环队列的储存结构 2.初始化 3.输出队列元素 4.入队 5.出队 6.取队头元素 7.求队列长度 8.源代码 三.链式队列 1.队列的链式存储结构表示 2 ...

最新文章

  1. base64 数据处理
  2. Chapter 1 First Sight——14
  3. java开发需要掌握哪些东西_java开发需要掌握哪些技能
  4. linux重新编译mysql_linux下编译安装mysql++ | 学步园
  5. 45种可以拿到Webshell的程序
  6. source insight(SI)使用教程
  7. 【原理图操作】原理图更新PCB时未改动元器件布局变动问题?
  8. usb 系统消息_小米USB3.0分线器发布:四口USB 3.0+USB-C
  9. scp命令传文件--远程ip加端口号的方式
  10. golang读写excel
  11. Trust Region Policy Optimization (TRPO) 背后的数学原理
  12. java 数组随机抽取_Java利用数组随机抽取幸运观众
  13. 559. N叉树的最大深度
  14. 远程办公软件华为云WeLink视频会议指南(下篇:记录会议纪要)
  15. python画正切函数_在matplotlib中绘制tan
  16. 如何修复word文档损坏的?
  17. HP惠普服务器做RAID
  18. 100%可用的总裁主题授权版 WordPress付费资源素材下载主题
  19. Android开发使用Glide获取图片背景色淡绿色解决办法
  20. 高通AKM8975地磁传感器分析

热门文章

  1. go coverage 覆盖率工具
  2. 什么时候使用resulttype_mybatis什么时候用resulttype 什么时候用resultmap
  3. Fast R-CNN网络结构详解
  4. ORACLE CASE函数
  5. 树莓派4b构建大疆PSDK3.3环境
  6. Swift2.1-初始化
  7. Python运行闪退问题
  8. 翻译: 漫画HTTPS原理四 解析概念HTTPS、SSL、TLS
  9. 如何使用awsEnum基于提供的凭证枚举AWS云端资源
  10. spring官方文档中文