当前位置: 首页 > 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 /…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...