//队列的链表式实现
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>     //现算表达式,如果为假,向stderr打印出错信息并通过abort终止程序typedef int QDateType;  //定义别名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;
}
//队尾插入元素
void QueuePush(Queue* pq, QDateType x)
{assert(pq);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 QueuePop(Queue* pq)
{assert(pq);assert(pq->head && pq->tail);if (pq->head->next == NULL){free(pq->head);pq->head = pq->tail = NULL;}else{QueueNode* next = pq->head->next;free(pq->head);pq->head = next;}
}
//队列是否为空
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;
}int main()
{Queue q;QueueInti(&q);QueuePush(&q, 1);QueuePush(&q, 2);QueuePush(&q, 3);QueuePush(&q, 4);QueuePush(&q, 5);QueuePush(&q, 6);int n1 = QueueSize(&q);printf("初试元素数目:%d\n", n1);           //6//弹出并删除队首的3个元素:1 2 3,剩下4 5 6QueuePop(&q);QueuePop(&q);QueuePop(&q);int n2 = QueueSize(&q);printf("当前元素数目:%d\n", n2);           //3printf("当前队首元素%d\n", QueueFront(&q)); //4printf("当前队尾元素%d\n", QueueBack(&q));  //6system("pause");return 0;
}

C语言实现队列(先进先出)相关推荐

  1. 02 C语言使用队列实现缓存模块QueueBuffer

    02 C语言使用队列实现缓存模块QueueBuffer 作者 将狼才鲸 创建日期 2023-03-08 Gitee源码仓库地址:C语言使用队列实现缓存模块QueueBuffer 运行结果: jim@D ...

  2. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  3. C语言实现队列ADT(Queue ADT)接口COMP2521(附完整源码)

    C语言实现队列ADT接口COMP2521 QueueRep结构体定义 node结构体定义 实现以下5个接口 完整头文件 完整源文件 QueueRep结构体定义 typedef struct Queue ...

  4. G - 水陆距离 HihoCoder - 1478(广搜+队列先进先出性质)

    题目: 给定一个N x M的01矩阵,其中1表示陆地,0表示水域.对于每一个位置,求出它距离最近的水域的距离是多少. 矩阵中每个位置与它上下左右相邻的格子距离为1. Input 第一行包含两个整数,N ...

  5. java链式结构_java语言实现队列顺序结构与链式结构

    本文主要向大家介绍了java语言实现队列顺序结构与链式结构,通过具体的内容向大家展示,希望对大家学习java语言有所帮助. 队列的顺序存储结构实现 public class Queue{ privat ...

  6. C语言循环队列的基本操作(init,enquene,dequene)与杨辉三角(C和C++<queue>)

    C语言循环队列的基本操作与杨辉三角(C和C++的表示方法) C语言的表示方法 #include <stdio.h> #include <malloc.h> #define ma ...

  7. java先进先出 循环队列_java队列--先进先出(循环队列、链队列)

    队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头). 队列的特征就是: 先进先出. 队列的思想及实现也同样非常简单.在生活中的各种常常都需要排队进行,键盘中缓存区.操作系统中的作业调 ...

  8. c语言编程队列题,数据结构C语言编程 队列.doc

    数据结构C语言编程 队列 #include #include #define MAXQSIZE 10 typedef struct { int *base; //存储空间的起始地址,即数组的首地址,即 ...

  9. C语言实现一个先进先出的队列

    代码来源silicon labs的sdk. 一 源码 app_queue.h #ifndef APP_QUEUE_H #define APP_QUEUE_H#include <stdint.h& ...

最新文章

  1. WebStorm下ReactNative代码提示设置
  2. python设计模式(十三):解释器模式
  3. 超全的数据库建表/SQL/索引规范,适合贴在工位上!
  4. timer.schedule定时器用法
  5. Linux基础急速入门:用 TCPDUMP 抓包
  6. Javamysql语法转化oracle_MyBatis项目实战 快速将MySQL转换成Oracle语句
  7. E - 娜娜梦游仙境系列——莫名其妙的插曲
  8. GFLOPS和GMACS概念
  9. 解密微软Longhorn和Office 12发布时间表
  10. linux 释放内存
  11. array unshift php,php – 用于多维数组的array_unshift
  12. 供应博思特posital增量型编码器
  13. 七牛云上传视频并转码
  14. 复合材料层合板数值模拟_51CAE_新浪博客
  15. #includelt;和#include
  16. 西门子PID调节仿真程序,1200plc和1500plc通用,只需一个PLC实物,就能轻松实现PID工艺对象的仿真
  17. AMD移动双显卡驱动14.4_WHQL正式版64位_byTimer0677
  18. R语言——如何调用自己写的函数
  19. 最新C#/CLR的访谈录( 访Peter Hallam)
  20. 金蝶K3案例教程固定资产后台配置

热门文章

  1. 计算机网络常用工具软件
  2. Go语言中结构体打 Tag 是什么意思?
  3. 什么专业可以通过培训快速进入IC行业
  4. 基于Arduino UNO开发板,超声波模块,直流电机,实现电机驱动
  5. wxpython下拉选择框_wxPython ComboBox Choice类
  6. ppt流程图字体太小_PPT中较长的流程图如何清晰展现??
  7. 微PE工具箱安装系统
  8. 我的世界服务器指令修复耐久,我的世界中唯一可以修复物品的工具 你知道多少?...
  9. gorm 连接 MySQL
  10. 融合聚类信息的技术主题图可视化方法研究