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

先进先出的队

文章目录

  • 队列特点
  • 队列实现

队列特点

先进先出,后进后出

队列实现

queue.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"Queue.h"
//初始化
void QueInit(Queue* pq)
{assert(pq);pq->head = NULL;pq->tail = NULL;pq->size = 0;
}
//入队,一定在队尾入
void QuePush(Queue* pq, QDataType x)
{assert(pq);//开辟地址Qnode* newnode = (Qnode*)malloc(sizeof(Qnode));//开辟失败处理if (newnode==NULL){perror("malloc error");return;}newnode->data = x;newnode->next = NULL;if (pq->head==NULL){//确定是不是为空,不为空就报错,说明tail和head有错误assert(pq->tail == NULL);pq->head = pq->tail = newnode;}else{pq->tail->next = newnode;pq->tail = newnode;}	pq->size++;
}
//出队,一定在队头出
void QuePop(Queue* pq)
{assert(pq);assert(!QueEmpty(pq));Qnode* next = pq->head->next;free(pq->head);pq->head = next;
}
//大小
int QueSize(Queue* pq)
{assert(pq);return pq->size;
}
//销毁
void QueDistory(Queue* pq) 
{assert(pq);//要记得指向head,不要把pq直接拿来用,pq只是存节点的一个结构Qnode* cur = pq->head;while (cur != NULL){Qnode* next = cur->next;free(cur);cur = next;}pq->head = pq->tail = NULL;pq->size = 0;
}
//判断是否空了
bool QueEmpty(Queue* pq)
{assert(pq);//头为空,那这个队就是空的return pq->head == NULL;
}
//出栈展示
void QueShow(Queue* pq)
{assert(pq);Qnode* cur=pq->head;while (cur){printf("%d", cur->data);cur = cur->next;}
}
//返回前面的值
QDataType QueFront(Queue* pq)
{assert(pq);return pq->head->data;
}
//返回后面的值
QDataType QueBack(Queue* pq)
{assert(pq);return pq->tail->data;
}
test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"Queue.h"
void Quequetest()
{Queue pq;QueInit(&pq);QuePush(&pq, 1);QuePush(&pq, 2);QuePush(&pq, 3);QueShow(&pq);QueDistory(&pq);}
int main()
{Quequetest();return 0;
}
queue.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* next;QDataType data;
}Qnode;//定义节点,创造标记点
typedef struct Queue
{Qnode* head;//标记队列的头Qnode* tail;//标记队列的尾int size;
}Queue;//存储指针指向节点//先进先出
//后进后出
//链表队列
// 
//初始化
void QueInit(Queue* ps);
//入队,一定在队尾入
void QuePush(Queue* ps, QDataType x);
//出队,一定在队头出
void QuePop(Queue* ps);
//大小
int QueSize(Queue* ps);
//销毁
void QueDistory(Queue* ps);
//判断是否空了
bool QueEmpty(Queue* ps);
//出栈展示
void QueShow(Queue* ps);
//访问对头数据
QDataType QueFront(Queue* ps);
//访问队尾数据
QDataType QueBack(Queue* ps);

相关文章:

先进先出的队

文章目录 队列特点队列实现 队列特点 先进先出&#xff0c;后进后出 队列实现 queue.c#define _CRT_SECURE_NO_WARNINGS 1 #include"Queue.h" //初始化 void QueInit(Queue* pq) {assert(pq);pq->head NULL;pq->tail NULL;pq->size 0; } //入队&#…...

怎样学会单片机

0、学单片机首先要明白&#xff0c;一个单片机啥也干不了&#xff0c;学单片机的目的是学习怎么用单片机驱动外部设备&#xff0c;比如数码管&#xff0c;电机&#xff0c;液晶屏等&#xff0c;这个需要外围电路的配合&#xff0c;所以学习单片机在这个层面上可以等同为学习单片…...

数据结构笔记--常见二叉树分类及判断实现

目录 1--搜索二叉树 2--完全二叉树 3--平衡二叉树 4--满二叉树 1--搜索二叉树 搜索二叉树的性质&#xff1a;左子树的节点值都比根节点小&#xff0c;右子树的节点值都比根节点大&#xff1b; 如何判断一颗二叉树是搜索二叉树&#xff1f; 主要思路&#xff1a; 递归自底向…...

docker小白第二天

centos上安装docker docker官网&#xff0c;docker官网&#xff0c;找到下图中的doc文档。 进入如下页面 选中manuals&#xff0c;安装docker引擎。 最终centos下的docker安装文档链接&#xff1a;安装文档链接. 具体安装步骤&#xff1a; 1、打开Centos&#xff0c;输入命…...

【变形金刚03】使用 Pytorch 开始构建transformer

一、说明 在本教程中&#xff0c;我们将使用 PyTorch 从头开始构建一个基本的转换器模型。Vaswani等人在论文“注意力是你所需要的一切”中引入的Transformer模型是一种深度学习架构&#xff0c;专为序列到序列任务而设计&#xff0c;例如机器翻译和文本摘要。它基于自我注意机…...

「Web3大厂」价值70亿美元的核心竞争力

经过近 5 年的研发和酝酿&#xff0c;Linea 团队在 7 月的巴黎 ETHCC 大会期间宣布了主网 Alpha 的上线&#xff0c;引起了社区的广泛关注。截止 8 月 4 日&#xff0c;据 Dune 数据信息显示&#xff0c;其主网在一周内就涌入了 100 多个生态项目&#xff0c;跨入了超 2 万枚 E…...

前端发送请求和后端springboot接受参数

0.xhr、 ajax、axios、promise和async/await 和http基本方法 xhr、 ajax、axios、promise和async/await都是异步编程和网络请求相关的概念和技术&#xff01; xhr&#xff1a;XMLHttpRequest是浏览器提供的js对象&#xff08;API&#xff09;&#xff0c;用于请求服务器资源。…...

程序一直在阿里云服务器运行

保持阿里云服务器开机程序保持运行. 1.下载Screen CentOS 系列系统&#xff1a; yum install screen Ubuntu 系列系统&#xff1a; sudo apt-get install screen 2、运行screen&#xff0c;创建一个screen screen -S name:name是标记进程, 给进程备注…...

Linux 文件与目录管理

nvLinux 文件与目录管理 我们知道 Linux 的目录结构为树状结构&#xff0c;最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中&#xff0c;通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。 绝对路径&#xff1a; 路径的写…...

【CSS】CSS 布局——弹性盒子

Flexbox 是一种强大的布局系统&#xff0c;旨在更轻松地使用 CSS 创建复杂的布局。 它特别适用于构建响应式设计和在容器内分配空间&#xff0c;即使项目的大小是未知的或动态的。Flexbox 通常用于将元素排列成一行或一列&#xff0c;并提供一组属性来控制 flex 容器内的项目行…...

“华为杯”研究生数学建模竞赛2018年-【华为杯】B题:光传送网建模与价值评估(附优秀论文及matlab代码实现)

目录 摘要: 1.问题重述 1.1 问题背景 1.2 问题提出 2.问题假设 3.符号说明...

群晖 nas 自建 ntfy 通知服务(梦寐以求)

目录 一、什么是 ntfy ? 二、在群晖nas上部署ntfy 1. 在Docker中安装ntfy 2. 设置ntfy工作文件夹 3. 启动部署在 docker 中的 ntfy&#xff08;binwiederhier/ntfy&#xff09; 三、启动配置好后&#xff0c;如何使用ntfy 1. 添加订阅主题&#xff08; Subscribe to topic…...

Java基础练习九(方法)

求和 设计一个方法&#xff0c;用于计算整数的和 public class Work1101 {public static void main(String[] args) {// 设计一个方法&#xff0c;用于计算整数的和System.out.println(sum(7, 6));}public static int sum(int a, int b) {return a b;} }阶乘 编写一个方法&…...

Python-OpenCV中的图像处理-图像轮廓

Python-OpenCV中的图像处理-图像轮廓 轮廓什么是轮廓查找轮廓绘制轮廓轮廓特征图像的矩轮廓面积轮廓周长&#xff08;弧长&#xff09;轮廓近似凸包凸性检测边界矩形直边界矩形旋转边界矩形&#xff08;最小面积矩形&#xff09;最小外接圆最小外接三角椭圆拟合直线拟合 轮廓的…...

@Cacheable缓存相关使用总结

本篇文章主要讲解Spring当中Cacheable缓存相关使用 在实际项目开发中&#xff0c;有些数据是变更频率比较低&#xff0c;但是查询频率比较高的&#xff0c;此时为了提升系统性能&#xff0c;可以使用缓存的机制实现&#xff0c;避免每次从数据库获取 第一步&#xff1a;使用E…...

c++ static

static 成员 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用 static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化。 看看下面代码体会一下: //其他类 class …...

【数据结构】——栈、队列的相关习题

目录 题型一&#xff08;栈与队列的基本概念&#xff09;题型二&#xff08;栈与队列的综合&#xff09;题型三&#xff08;循环队列的判空与判满&#xff09;题型四&#xff08;循环链表表示队列&#xff09;题型五&#xff08;循环队列的存储&#xff09;题型六&#xff08;循…...

C++初阶之一篇文章教会你list(模拟实现)

list&#xff08;模拟实现&#xff09; list模拟实现list_node节点结构定义std::__reverse_iterator逆向迭代器实现list迭代器 __list_iterator定义list类成员定义list成员函数定义1.begin()、end()、rbegin()和rend()2.empty_init()3.构造函数定义4.swap5.析构函数定义6.clear…...

设备工单管理系统如何实现工单流程自动化?

设备工单管理系统属于工单系统的一种&#xff0c;基于其丰富的功能&#xff0c;它可以同时处理不同的多组流程&#xff0c;旨在有效处理发起人提交的事情&#xff0c;指派相应人员完成服务请求和记录全流程。该系统主要面向后勤管理、设备维护、物业管理、酒店民宿等服务行业设…...

ubuntu20.04.6anzhuang mtt s80

需要打开主板的Resize BAR和Above 4G功能&#xff0c;否则GPU显存不能被正确识别; 2. 在某些不支持PCIe Gen5的主板上&#xff0c;需要把PCIe速率由auto设置为PCIe Gen4速率&#xff1b; sudo apt install lightdm unity-greetersheding lightdm : lightdm sudo apt install /…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...