队列

article/2025/9/1 22:10:48

目录

  • 队列的概念及结构
  • 队列代码实现

队列的概念及结构

队列和栈略有不同,队列是先进后出的一种数据结构,通常使用链表来表示,当然有一种特殊的循环队列使用顺序表来进行表示的。
队列只允许从后进入,从前弹出,就像我们生活中排队一样,下面来看下队列的结构模型:
在这里插入图片描述
如上图,队列是只有队头才能删除元素(出队),队尾才能插入元素(入队),由此可以得出数据结构为:

typedef int QDataType;
//定义结点的结构体
typedef struct QNode
{QDataType val; strcut QNode* next;
}QNode;
//定义队列的结构体
typedef struct Queue
{QNode* head;  //队头指针QNode* tail;   //队尾指针
}Queue;

队列代码实现

初始化

void QueueInit(Queue* Q)
{Q->head = Q->tail = NULL;
}

创建节点

QNode* CreateQNode(QDataType data)
{QNode* node = (QNode*)malloc(sizeof(QNode));node->next = NULL;node->data = data;return node;
}

入队

void QueuePush(Queue* Q, QDataType data)
{QNode* node = CreateQNode(data);if (!Q->head){Q->head = Q->tail = node;}Q->tail->next = node;Q->tail = node;
}

出队

void QueuePop(Queue* Q)
{if (!Q->head){return;}QNode* next = Q->head->next;free(Q->head);Q->head = next;if (!Q->head){Q->tail = NULL;}
}

获取队首元素

QDataType QueueHeadElement(Queue* Q)
{return Q->head->data;
}

获取队尾元素

QDataType QueueTailElement(Queue* Q)
{return Q->tail->data;
}

队列元素个数

int QueueSize(Queue* Q)
{int count = 0;QNode* cur = Q->head;while (cur){cur = cur->next;count++;}return count;
}

判空

int QueueEmpty(Queue* Q)
{if (!Q->head){return 1;}return 0;
}

销毁

void QueueDestroy(Queue* Q)
{QNode* next;while (Q->head){next = Q->head->next;free(Q->head);Q->head = next;}
}

http://chatgpt.dhexx.cn/article/v0ew4u1g.shtml

相关文章

HPatches数据集(图像匹配)---2关于评估代码的解释---和python画出结果

关于画图: 参考: Matplotlib系列: https://blog.csdn.net/yuyh131/category_7823048.html 关于评估代码的解释: 我们先提前下载所有算法对数据集patches提取的描述符: ./download.sh descr List of available descriptor results file for HPatches: ----------------------…

LIOP特征

注:本文是笔者在阅读相关英文文献后,翻译、整理所得;原文是:Local Intensity Order Pattern for Feature Description; Zhenhua Wang, Bin Fan, and Fuchao Wu;ICCV2011 LIOP: Local Intensity Order Patte…

【特征检测】LIOP特征描述算法

简介: LIOP特征描述算法,是2011年ICCV上一片paper《Local Intensity Order Pattern for Feature Description》中提出的一种特征描述算法。等有空闲时间把原文仔细翻译一遍,然后放上来分享给大家。 算法的提出者也是比较厉害的,其…

php把字符串日期转成时间戳,php怎样把日期转成时间戳

php把日期转成时间戳的方法:可以利用strtotime()函数来实现。strtotime()函数可以将任何字符串的日期时间描述解析为Unix时间戳,若成功则返回时间戳,失败则返回false。 strtotime() 函数将任何字符串的日期时间描述解析为 Unix 时间戳&#x…

java日期转时间戳精确到毫秒

代码如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test {public static void main(String[] args) {long daytimeToStamp("2019-08-06 11:22:32");System.out.println(day);//输出1…

go 日期时间戳转换

一、日期字符串转成时间戳 //设置时区 var LOC, _ time.LoadLocation("Asia/Shanghai") //日期时间字符串 timeStr : "2022-10-10 10:00:00" //要转换成时间日期的格式模板(go诞生时间,模板必须是这个时间) timeTmepla…

java中如何把字符串日期转时间戳

定义一个字符串日期; String dataStr"2022-06-01"; public static java.sql.Timestamp parseTimestamp(String dateStr) {return parseTimestamp(dateStr, "yyyy/MM/dd HH:mm:ss"); } public static java.sql.Timestamp parseTimestamp(String dateStr,…

C语言 日期转时间戳

C语言 日期转时间戳 废话先说啥时候开始数?站在2022的肩膀上!一年能“嘀嗒”多少下?言归正传 废话先说 关于用C实现日期转时间戳,面对这样一个很基础的功能,作为一个小白白当然是,先百度,再看C…

制作持久化U盘Kali 用U盘启动 使用fluxion破解WIFI密码(上)

这次文章包含两部分, 一部分是如何制作U盘KALI, 另一部分说明如何使用这新制作的U盘启动, 再使用fluxion 破解WIFI密码. 等以后有空写一份如何用airmon-ng来破WIFI密码吧. 本文针对有一定基础的初学者, 主要是说明有哪些坑要避开。因为装了几次发现太多坑了, 不想大家再走弯…

fluxion破解wifi

https://streamja.com/P30oE 上面有教程可以看一下,最近搞一个会爆炸的小玩意,如果搞成功了就可以理论上100%拿到wifi密码

使用aircrack和fluxion工具获取wifi密码的教程

首先,本教程仅供技术参考用,切勿非法获取他人wifi使用权!! 本教程在kali2020下使用,aircack与fluxion均使用(2020.7.22)最新版本。 有两个注意事项写在前面: 第一:flux…

Fluxion无线攻击

使用步骤 github地址 https://github.com/deltaxflux/fluxion 进入到fluxion目录下 ./fluxion 启动fluxion 启动之后会先检测没有安装的项,讲红色没有安装的 安装完 也许会到依赖项 问题 先看看你的源有没有问题,不行的话,就按提示 安装指定…

实战-Fluxion与wifi热点伪造、钓鱼、wifi破解

今天周末遇到了断网,听说是修路挖到了电缆,作为难得的周末没网是不能接受的,这时我看上了邻居家的WiFi,奈何又没密码,只能动手白嫖一下了。 现在的家用路由器支持WiFi一般是wpa/wpa2,没有连接密码我们能够做…

Fluxion 实战答疑

实战文章《实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解》发布之后,大家响应热烈,不过也遇到了很多问题。微信后台被各种提问挤爆了,于是抓紧时间出了这篇答疑。 0x00-设置更新源 在apt-get install xxx前要记得更新源哦&#xf…

基于fluxion 6.9 钓鱼wifi

前言 本文章仅用来学习,切勿用于违法乱纪,出现问题后果自负。 利弊 利就是对于安全意识弱的很快知晓秘密,不用像跑字典一样那么久 弊就是对于安全意识高和有过类似操作经历的人容易被识破 下载安装,依赖配置 下载 git clone…

Fluxion钓鱼攻击

Fluxion简介 Fluxion是技术和社会工程学自动化的一个混合,它的特点在于诱骗用户自己输入并移交wifi密码。它是唯一一个通过使用WAP握手功能来控制登录页面的行为和控制整个脚本的行为的工具。它会阻塞原始网络并创建一个具有相同名称的克隆网络,引起断开连接后的用户加入。并…

第四篇 kali Linux 下安装fluxion

第四篇 kali Linux 下安装fluxion 第一篇kali linux 安装 https://blog.csdn.net/qq_43632394/article/details/109121233 第二篇 kali Linux换源 https://blog.csdn.net/qq_43632394/article/details/109128692 第三篇 kali Linux中文输入法 https://blog.csdn.net/qq_4363…

Fluxion安装教程

首先在终端执行:git clone https://gitee.com/youzicha123/fluxion.git 通过cd fluxion进入子目录 查看目录内容并安装./fluxion.sh 红色字体部分显示需要安装缺少的依赖包 ./fluxion.sh -i 按回车接着安装 安装结束后出现 在debian下载缺少的依赖包 在kali浏览…

fluxion5.9 踩坑

1.环境缺少pyrit 在linux安装pyrit_pinro的博客-CSDN博客_pyrit 安装# WPA/WPA2-PSK# Fluxion依赖网上给的apt资源好像都失效了,可以找个git资源安装1.下载python2及相关依赖apt-get install libpcap-devapt-get install python2.7-dev libssl-dev zlib1g-dev libpcap-dev2.从…

Fluxion

破解WiFi密码,除了Aircrack-ng的暴力跑字典外,还有一种新“姿势”,就是WiFi钓鱼,利用Fluxion可以很简单的实现。 首先下载fluxion:https://github.com/MuhammadOmar125/fluxion 下载之后解压运行,保证源正确…