数据结构系列-队列的结构和队列的实现

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

队列

队列的概念及结构

队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,进行插入操作的一端称为队尾,进行删除操作的一端称为队头

队列的实现

队列也可以数组和链表的结构实现,使用链表的结构实现更优一点,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低

#pragma once
#include<stdio.h>
#include<stdbool.h>
#include<assert.h>typedef int QDataType;
typedef struct QueueNode
{int val;struct QueueNode* next;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;void QueueInit(Queue* pq);
void QueueDestroy(Queue* pq);
//入队列
void QueuePush(Queue* pq, QDataType x);
//出队列
void QueuePop(Queue* pq);QDataType QueueFront(Queue*pq);
QDataType QueueBack(Queue* pq);
bool QueueEmpth(Queue* pq);
int QueueSize(Queue* pq);
#define _CRT_SECURE_NO_WARNINGS
#include"code.4.5.Queue.h"
void QueueInit(Queue* pq) {assert(pq);pq->phead = NULL;pq->ptail = NULL;pq->size = 0;
}void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur = pq->phead;while (cur) {QNode* next = cur->next;free(cur);cur = next;}pq->phead = pq->ptail = NULL;pq->size = 0;
}//入队列
void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL) {perror("malloc fail");return;}newnode->val = x;newnode->next = NULL;if(pq->ptail){pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;
}
void QueuePop(Queue* pq)
{assert(pq);assert(pq->phead != NULL);if (pq->phead->next == NULL) {free(pq->phead);pq->phead = pq->ptail = NULL;}else{QNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}pq->size--;
}QDataType QueueFront(Queue* pq) {assert(pq);assert(pq->phead != NULL);return pq->phead->val;
}
QDataType QueueBack(Queue* pq) {assert(pq);assert(pq->ptail != NULL);return pq->ptail->val;
}
bool QueueEmpth(Queue* pq)
{assert(pq);return pq->size == 0;
}
int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}
#define _CRT_SECURE_NO_WARNINGS
#include"code.4.5.stack.h"
//int main() {
//	ST s;
//	STInit(&s);
//	STPush(&s,1);
//	STPush(&s,2);
//	STPush(&s,3);
//	int top = STTop(&s);
//	printf("%d", top);
//
//	STDestroy(&s);
//	return 0;
//}
#include"code.4.5.Queue.h"
int main()
{Queue q;QueueInit(&q);QueuePush(&q, 1);QueuePush(&q, 2);printf("%d ", QueueFront(&q));QueuePop(&q);QueuePush(&q, 3);QueuePush(&q, 4);while (!QueueEmpth(&q)){printf("%d ", QueueFront(&q));QueuePop(&q);}QueueDestroy(&q);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全面解析找不到msvcr110.dll,无法继续执行代码的解决方法

MSVCR110.dll的丢失可能导致某些应用程序无法启动。当用户试图打开依赖于该特定版本DLL文件的软件时&#xff0c;可能会遭遇“找不到指定模块”的错误提示&#xff0c;使得程序启动进程戛然而止。这种突如其来的故障不仅打断了用户的正常工作流程&#xff0c;也可能导致重要数据…

基于SpringBoot+微信小程序的农产品销售平台

一、项目背景介绍&#xff1a; 随着人们收入的不断增加、生活水平的普遍提高,对生活质量的要求也日益凸显。而作为关乎每个人的生命、健康安全的食品卫生、质量无疑更被人们所重视。所以,… 2. 其他国家的绿色有机食品所占其国家食品市场比重比较大,如德国在99年便已达到40%,美…

Mac反编译APK

文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start&#xff08;python版本的&#xff09;&#xff0c;我了解 grpc 内部使用的是 HTTP2&#xff0c;所以我就想着抓包来试试&#xff0c;下面就来记录一下这个过程中的探索。 注意&#xff1a;我的电脑上面安装了 Fiddler Classic&#xff0c;…

微信小程序生命周期管理:从数据初始化到事件绑定

作为一个独立的应用开发平台,微信小程序提供了自己的生命周期机制,与我们熟悉的Vue.js框架有一些差异。掌握小程序生命周期的特点和使用技巧,对于开发高质量的小程序应用至关重要。深入理解和掌握小程序生命周期的使用技巧,将有助于我们构建出更加健壮和可维护的小程序应用。 小…

可视化大屏 - 项目1

文章目录 技术栈echarts 可视化需求分析代码实现 技术栈 flexible.js rem 实现不同终端下的响应式布局&#xff0c;根据不同屏幕宽度&#xff0c;自适配布局&#xff1b; html中引入index.js&#xff0c;可以改名为flexible.js&#xff1b;默认划分10份&#xff0c;可以自己修…

Django -- 模型层

模型和字段 一个模型&#xff08;model&#xff09;就是一个单独的、确定的数据的信息源&#xff0c;包含了数据的字段和操作方法。通常&#xff0c;每个模型映射为一张数据库中的表。 基本的原则如下&#xff1a; 每个模型在Django中的存在形式为一个Python类每个类都是dja…

C#的Thread.CurrentThread.IsBackground的作用

当一个线程&#xff0c;被设置为IsBackground true的时候&#xff0c;它就会放手&#xff0c;让主线程不用等&#xff0c;而主线程一退出&#xff0c;它就会退出。 为False时&#xff0c;则是要求主线程等待其执行完毕&#xff0c;它先退出&#xff0c;主线程再退出。 参考官方…

使用阿里云试用Elasticsearch学习:1.6 基础入门——排序与相关性

默认情况下&#xff0c;返回的结果是按照 相关性 进行排序的——最相关的文档排在最前。 在本章的后面部分&#xff0c;我们会解释 相关性 意味着什么以及它是如何计算的&#xff0c; 不过让我们首先看看 sort 参数以及如何使用它。 排序 为了按照相关性来排序&#xff0c;需…

Linux存储的基本管理

实验环境&#xff1a; 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称&#xff1a; SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 本题就和 昨天的 416. 分割等和子集 很像了&#xff0c;可以尝试先自己思考做一做。 视频讲解&#xff1a;https://www.bilibili.com/video/BV14M411C7oV https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%…

Python性能优化:提升代码执行效率的秘诀

在Python编程中&#xff0c;性能优化是一个不可忽视的方面。无论是处理大数据集&#xff0c;还是构建需要快速响应的系统&#xff0c;高效的代码都是至关重要的。本文将讨论一些Python性能优化的关键策略&#xff0c;包括选择正确的数据结构、避免常见的性能陷阱以及使用并行计…

牛的学术圈(c++实现)

题目 由于对计算机科学的热爱&#xff0c;以及有朝一日成为 「Bessie 博士」的诱惑&#xff0c;奶牛 Bessie 开始攻读计算机科学博士学位。 经过一段时间的学术研究&#xff0c;她已经发表了 N 篇论文&#xff0c;并且她的第 i 篇论文得到了来自其他研究文献的 ci 次引用。 B…

Python常用算法思想--快速解决24点游戏案例【附源码】

算法的起源:欧几里德的《几何原本》中阐述的求两个数的最大公约数的过程。 算法的定义:解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法描述解决问题的策略机制。 算法的本质:算法是程序的灵魂,也是衡量一位程序员水平高低的最好参照物。…

SQLAlchemy 建立数据库模型之间的关系

常见关系&#xff1a; 一对多关系多对一关系多对多关系一对一关系 一对多关系&#xff08;一个作者&#xff0c;多篇文章&#xff09; ## 一对多关系&#xff0c;单作者-多文章&#xff0c;外键不可少 ## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定…

在国企特定的环境中,如何激励低效能员工?

导读&#xff1a; 总额高达4万亿元的巨额投资&#xff0c;曾经让国企在应对百年不遇的金融危机中交出一份靓丽的成绩单&#xff0c;然而随着“4万亿经济刺激措施”逐步退出&#xff0c;国企问题又开始暴露出来。 2012年度国内上市公司财务报告显示&#xff0c;国企成为亏损大户…

gitee代码上传同步指南(git操作)

1.下载安装git 最开始安装git&#xff0c;下载链接&#xff1a;CNPM Binaries Mirror 选择对应版本下载git即可 2.生成ssh公钥 电脑桌面右键&#xff0c;选择Open Git Bash here 需要注意&#xff0c;在git中复制粘贴功能和windows不同&#xff0c;它有两种方式&#xff…

解码零跑汽车2023年报:营收增速大幅滑坡,净亏42亿,如何讲故事

在2023年的新势力车企中&#xff0c;有这么一家低调崛起的品牌&#xff0c;并没有像蔚小理那样高调&#xff0c;但去年全年销量却反超小鹏汽车&#xff0c;晋升成为新势力车企中的销量第三名&#xff0c;它就是第四家登陆港交所上市的新势力品牌—零跑汽车。 不过&#xff0c;…

蓝桥集训之斐波那契前n项和

蓝桥集训之斐波那契前n项和 核心思想&#xff1a;矩阵乘法 左边求和 右边求和 得到Sn fn2 – 1 因此只要求出fn2 即可 #include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;int n,m;int A[2][2] { …

【数据库】MySQL InnoDB存储引擎详解 - 读书笔记

MySQL InnoDB存储引擎详解 - 读书笔记 InnoDB 存储引擎概述InnoDB 存储引擎的版本InnoDB 体系架构内存缓冲池LRU List、Free List 和 Flush List重做日志缓冲&#xff08;redo log buffer&#xff09;额外的内存池 存储结构表空间系统表空间独立表空间通用表空间undo表空间临时…