队列的实现(c语言)
队列也是线性表,也是分为两种的:1、顺序队列 2、链队列
顺序队列
#include <stdio.h>
#include <stdlib.h>typedef struct {char *base;int front;int erer;int size;
}SqQueue;void initSqQueue(SqQueue *queue,int size){queue->base=(char*)malloc(sizeof(char)*size);queue->erer=0;queue->front=0;queue->size=size;
}
//入队
void enqueue(SqQueue *queue,char value){if(((queue->erer+1)%queue->size)==queue->front){printf("队满操作\n");}else{queue->base[queue->erer%queue->size]=value;queue->erer=++queue->erer%queue->size;}
}
//出队
void dequeue(SqQueue *queue){if(queue->front!=queue->erer){printf("%c",(queue->base)[queue->front]);queue->front=++queue->front%queue->size;}else{printf("队空操作!\n");}
}int getSize(SqQueue *queue){return (queue->erer-queue->front+queue->size)%queue->size;
}int main(){SqQueue queue;initSqQueue(&queue,10);enqueue(&queue,'I');enqueue(&queue,' ');enqueue(&queue,'L');enqueue(&queue,'o');enqueue(&queue,'v');printf("%d\n",getSize(&queue));system("pause");return 0;
}
链队列
#include <stdio.h>
#include <stdlib.h>typedef struct lqSqNode {char value;struct lqSqNode *next;
}*LinkSQ,lqSqNode;typedef struct LqQueue {lqSqNode *front;lqSqNode *erer;int size;
}LqQueue;
//初始化链队列
void initLqQueue(LqQueue *queue){LinkSQ linksq=(LinkSQ)malloc(sizeof(lqSqNode));linksq->next=NULL;queue->front=linksq;queue->erer=linksq;queue->size=0;
}
//入队
void enqueue(char value,LqQueue *queue){lqSqNode *node=(lqSqNode*)malloc(sizeof(lqSqNode));node->value=value;node->next=NULL;queue->erer->next=node;queue->erer=node;++queue->size;
}
//出队
void dequeue(LqQueue *queue){if(queue->front->next!=NULL){ lqSqNode *node=queue->front->next;
// printf("%c\n",node->value);queue->front->next=node->next;free(node); --queue->size;}else{printf("队空操作!\n");}
}int main(){LqQueue queue;initLqQueue(&queue);enqueue('i',&queue);enqueue('L',&queue);enqueue('k',&queue);enqueue('l',&queue);
// dequeue(&queue);
// dequeue(&queue);
// dequeue(&queue);
// dequeue(&queue);
// dequeue(&queue);printf("%d\n",queue.size);system("pause");return 0;
}
相关文章:
队列的实现(c语言)
队列也是线性表,也是分为两种的:1、顺序队列 2、链队列 顺序队列 #include <stdio.h> #include <stdlib.h>typedef struct {char *base;int front;int erer;int size; }SqQueue;void initSqQueue(SqQueue *queue,int size){queue->base…...
雷电模拟器上使用第一个frida(五)用python实现逆向分析并模拟登陆
上篇通过hook确定了登录代码的位置,参考雷电模拟器上使用第一个frida(四)第一个HOOK之抓包-CSDN博客 接下来逆向分析一下,并用python实现其功能,并模拟登陆。...

基于Linux上MySQL8.*版本的安装-参考官网
本地hadoop环境安装好,并安装好mysql mysql下载地址及选择包 MySQL :: Download MyS的QL Community Server (Archived Versions) mysql安装步骤 下载与上传解压给权限 #mysql安装包上传到/opt下 cd /usr/local/ #解压到此目录 tar -xvf /opt/mysql-8.0.33-linux-glibc2.12-…...
git 项目管理操作
git stash: 保存当前工作进度 git stash save message... : 添加一些注释。 git stash pop : 恢复最新的进度到工作区 git remote prune origin:将本地分支与已删除的远程分支同步 git branch -d <branch-name> :删除分支 git branch -D <branc…...

数据结构--》掌握数据结构中的排序算法
当我们面对海量数据时,如何高效地将其排序是数据结构领域中一个重要的问题。排序算法作为其中的关键部分,扮演着至关重要的角色。 无论你是初学者还是进阶者,本文将为你提供简单易懂、实用可行的知识点,帮助你更好地掌握排序算法在…...
Kubernetes实战(三)-k8s节点设置cpu高于多少就不调度
1 k8s节点设置的概念和原理 k8s是Google开源的容器集群管理系统,用于自动化部署、扩展和管理容器化应用程序。在k8s中,Node是指容器运行的物理或虚拟机器。Node可以是一个物理机或一个虚拟机器,k8s通过其调度器将Pod调度到每个Node上。对于一…...

数学建模——平稳时间序列分析方法
目录 1、平稳性的Daniel检验 (1)Spearman相关系数假设检验 (2)时间序列平稳性的Danniel假设检验 案例 【模型分析】 1、原始数据at的平稳性检验 2、一阶差分序列的平稳性检验 3、二阶差分序列的平稳性检验 4、建立AR&#…...

Vuex使用方式及异步问题处理
🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 生活的理想,为了不断更新自己 ! 目录 1.Vuex简介: 2.vuex获取值 2.1安装 2.2.菜单栏 2.3.模块 2.4使用 3.改…...

【Vue面试题二十七】、你了解axios的原理吗?有看过它的源码吗?
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说下你的vue项目的目录结…...
LocalDateTime与时间戳
众所周知,如果想把 LocalDateTime 转为时间戳,需要先指定时区,然后才能转为时间戳,例如: LocalDateTime localDateTime LocalDateTime.now(); ZonedDateTime zonedDateTime localDateTime.atZone(ZoneId.systemDe…...

【Power BI】Power BI 入门指南:版本、下载和报表创建的步骤
文章目录 一、前言二、了解 Power BI 版本三、下载 Power BI Desktop四、如何开始使用 Power BI Desktop五、在 Power BI Desktop 中创建报表六、文末总结 一、前言 Power BI 是微软于 2013 年推出的产品,为一款商业智能与数据可视化工具。它通过引人注目的视觉效果…...
代码随想录算法训练营第23期day21| 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
目录 一、(leetcode 235)二叉搜索树的最近公共祖先 二、(leetcode 701)二叉搜索树中的插入操作 三、(leetcode 450)删除二叉搜索树中的节点 一、(leetcode 235)二叉搜索树的最近公…...
小程序页面路由传参的方法?
小程序页面路由传参的方法有三种: 1.URL参数传递:通过在页面跳转的URL中携带参数实现传参。可以使用wx.navigateTo或wx.redirectTo等跳转方法,并在URL中添加参数。 示例: // PageA.wxml <button bindtap"navigateToPage…...

Ubuntu下安装Python
Ubuntu下安装Python 预备知识一、Python安装Python 二、Anaconda安装Anaconda卸载Anaconda 三、Miniconda安装Miniconda 四、异同比较 预备知识 (1) Python是一种编程语言。 (2) Anaconda是一款包管理工具,用来管理Python及其他语言的安装包,预装了很多…...

宝塔使用腾讯COS存储实现自动备份服务器网站数据图文教程
一、进入宝塔安装腾讯COS 点击设置打开后需要配置以下cos参数 二、腾讯云创建COS存储桶 选择私有读写,其他默认就行 三、创建访问密钥 四、配置宝塔中腾讯COS相关设置 很多人是配置错误导致无法正常链接cos region为cos存储桶所属地域 Bucker为存储桶名称 五、…...
npm命令介绍
npm 描述:Node Package Manager (NPM) 是 Node.js 的包管理器,用于安装、管理和发布 JavaScript 包。示例:npm -v npm access 描述:控制包的访问权限。需要管理员或拥有特定权限的用户才能执行。示例:npm access pu…...

openGauss学习笔记-100 openGauss 数据库管理-管理数据库安全-客户端接入之用SSL进行安全的TCP/IP连接
文章目录 openGauss学习笔记-100 openGauss 数据库管理-管理数据库安全-客户端接入之用SSL进行安全的TCP/IP连接100.1 背景信息100.2 前提条件100.3 注意事项100.4 操作步骤100.5 相关参考 openGauss学习笔记-100 openGauss 数据库管理-管理数据库安全-客户端接入之用SSL进行安…...

ESP8266 Node Mcu开发板连接WIFI并上报数据到MQTT服务器——物联网应用开发
一、前言 本文主要介绍关于ESP8266 Node Mcu开发板如何连接WIFI并将本地采集的数据上传到MQTT服务器中。 大家调试可以使用MQTTBox 二、WIFI连接 首先,导入WIFI连接所需的头文件,引入所需库。 #include <ESP8266WiFi.h> 声明字符串常量࿰…...

苍穹外卖(八) 使用WebSocket协议完成来单提醒及客户催单功能
WebSocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP…...

网站如何应对网络流量攻击
网络安全问题中,受到流量攻击是一种常见挑战。以下是一系列的专业建议,帮助您预防和减轻这类攻击,从而确保您的网站和数据的安全。 使用 Web 应用程序防火墙 (WAF) Web 应用程序防火墙是一项专门的安全工具,能够检测和拦截恶意流…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...