链队列的基本操作(带头结点,不带头结点)
结构体
typedef struct linknode{int data;struct linknode* next;后继指针
}linknode;
typedef struct {linknode* front, * rear;//队头队尾指针
}linkquene;
初始化队列(带头结点)
int initquene(linkquene* q)//初始化队列
{q->front = q->rear = (linknode*)malloc(sizeof(linknode));q->front->next =NULL;
}
队列判空
int isempty(linkquene* q)//队列判空
{if (q->front == q->rear)return true;else return false;
}
进队操作
int enquene(linkquene* q, int x)//进队操作
{linknode* s = (linknode*)malloc(sizeof(lnode));s->data = x;s->next = NULL;q->rear->next = s;q->rear = s;
}
出队操作
int dequene(linkquene* q, int* x)//出队操作
{if (q->front == q->rear)return false;linknode* p = q->front->next;x = p->data;q->front->next = p->next;if (q->rear == p)q->rear = q->front;free(p);return true;
}
完整的测试代码
#include<stdio.h>
typedef struct linknode{int data;struct linknode* next;
}linknode;
typedef struct {linknode* front, * rear;
}linkquene;
int initquene(linkquene* q)//初始化队列
{q->front = q->rear = (linknode*)malloc(sizeof(linknode));q->front->next =NULL;
}
int isempty(linkquene* q)//队列判空
{if (q->front == q->rear)return true;else return false;
}
int enquene(linkquene* q, int x)//进队操作
{linknode* s = (linknode*)malloc(sizeof(linknode));s->data = x;s->next = NULL;q->rear->next = s;q->rear = s;
}int dequene(linkquene* q, int* x)//出队操作
{if (q->front == q->rear)return false;linknode* p = q->front->next;x = p->data;q->front->next = p->next;if (q->rear == p)q->rear = q->front;free(p);return true;
}
int main()
{linkquene q;initquene(&q);if (!isempty(&q)) //队列判空 printf("队列不为空\n");elseprintf("队列为空\n");int x = 0;printf("要进队的元素为:");scanf("%d", &x);if (enquene(&q, x)) //进队操作 printf("进队元素为%d\n", x);elseprintf("队列满,不能进队%d\n", x);if (dequene(&q, &x)) //出队操作 printf("出队元素为%d\n", x);elseprintf("队列为空,不能出队\n");printf("%d\n", x);
}
不带头结点初始化操作
int initquene(linkquene* q)//不带头结点的初始化队列
{q->front =NULL;q->next = NULL;
}
不带头结点队列判空
int isempty(linkquene* q)//不带头结点的队列判空
{if (q->front == NULL)return true;elsereturn false;
}
不带头结点进队操作
int enquene(linkquene* q, int x)//不带头结点进队操作
{linknode* s = (linknode*)malloc(sizeof(linknode));s->data = x;s->next = NULL;if(q->front==NULL)//在空队列中插入元素{q->front=s;//修改队尾指针q->rear=s;}else{q->rear->next=s;//新结点插入到rear结点之后q->rear=s; //修改rear指针}
}
不带头结点的出队操作
int dequene(linkquene* q, int* x)//不带头结点的出队操作
{if (q->front == NULL)return false;linknode* p = q->front;x = p->data;q->front = p->next;if (q->rear == p){q->front=NULL;q->rear =NULL;}free(p);return true;
}
不带头结点的完整测试代码
#include<stdio.h>
typedef struct linknode{int data;struct linknode* next;
}linknode;
typedef struct {linknode* front, * rear;
}linkquene;
int initquene(linkquene* q)//不带头结点的初始化队列
{q->front =NULL;q->rear = NULL;
}
int isempty(linkquene* q)//不带头结点的队列判空
{if (q->front == NULL)return true;elsereturn false;
}
int enquene(linkquene* q, int x)//不带头结点进队操作
{linknode* s = (linknode*)malloc(sizeof(linknode));s->data = x;s->next = NULL;if(q->front==NULL)//在空队列中插入元素{q->front=s;//修改队尾指针q->rear=s;}else{q->rear->next=s;//新结点插入到rear结点之后q->rear=s; //修改rear指针}
}
int dequene(linkquene* q, int* x)//不带头结点的出队操作
{if (q->front == NULL)return false;linknode* p = q->front;x = p->data;q->front = p->next;if (q->rear == p){q->front=NULL;q->rear =NULL;}free(p);return true;
}
int main()
{linkquene q;initquene(&q);if (!isempty(&q)) //队列判空 printf("队列不为空\n");elseprintf("队列为空\n");int x = 0;printf("要进队的元素为:");scanf("%d", &x);if (enquene(&q, x)) //进队操作 printf("进队元素为%d\n", x);elseprintf("队列满,不能进队%d\n", x);if (dequene(&q, &x)) //出队操作 printf("出队元素为%d\n", x);elseprintf("队列为空,不能出队\n");printf("%d\n", x);
}

相关文章:
链队列的基本操作(带头结点,不带头结点)
结构体 typedef struct linknode{int data;struct linknode* next;后继指针 }linknode; typedef struct {linknode* front, * rear;//队头队尾指针 }linkquene; 初始化队列(带头结点) int initquene(linkquene* q)//初始化队列 {q->front q->r…...
深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案
目录 一、基于 Docker、DockerCompose 搭建 Redis 集群 1.1、前言 1.2、编写 shell 脚本 1.3、执行 shell 脚本,创建集群配置文件 1.4、编写 docker-compose.yml 文件 1.5、启动容器 1.6、构建集群 1.7、使用集群 1.8、如果集群中,有节点挂了&am…...
C现代方法(第3、4章)笔记
文章目录 C现代方法笔记(chapter3&4)第3章 格式化输入/输出3.1 printf函数3.1.1 转换说明3.1.2 转义序列 3.2 scanf函数3.2.1 scanf函数的工作方法3.2.2 格式串中的普通字符3.2.3 易混淆的printf函数和scanf函数 问与答编程题 第4章 表达式4.1 算术运…...
R语言绘制染色体变异位置分布图,RIdeogram包
变异位点染色体分布图 今天分享的内容是通过RIdeogram包绘制染色体位点分布图,并介绍一种展示差异位点的方法。 在遗传学研究中,通过测序等方式获得了基因组上某些位置的基因型信息。 如下表,第一列是变异位点的ID,第二列是染色体…...
Vue知识系列(7)每天10个小知识点
目录 系列文章目录Vue知识系列(1)每天10个小知识点Vue知识系列(2)每天10个小知识点Vue知识系列(3)每天10个小知识点Vue知识系列(4)每天10个小知识点Vue知识系列(5&#x…...
5分钟就能实现的API监控,有什么理由不做呢?
API深度影响着你的应用 今天的数字应用世界其实是一个以API为中心的世界,我们只是没有意识到这些API的重要性。比如在电子商务交易、社交媒体等对交互高度依赖的领域,可以说API决定了应用的质量一点也不为过。 以京东为例,用户的每一次操作背…...
Jmeter引入外部jar包以满足加密数据的Post请求
目录 一、把项目打成jar包 1、创建一个Maven项目,并保证可以正常运行。 2、把工具类放置项目中,确保无报错且能够正常使用。 3、打包 4、验证 jar包是否有效 5、你想打多个工具类的包 二、在jmeter中使用 1、把jar包放到jmeter仓库下,…...
了解冒泡排序
package com.mypackage.array;import java.util.Arrays;public class Demo07 {public static void main(String[] args) {int[] a {3,2,6,7,4,5,6,34,56,7};int[] sort1 sort1(a); //调用我们自己写的排序方法后,返回一个排序后的数组System.out.println(Array…...
群辉 Synology NAS Docker 安装 RustDesk-server 自建服务器只要一个容器
from https://blog.zhjh.top/archives/M8nBI5tjcxQe31DhiXqxy 简介 之前按照网上的教程,rustdesk-server 需要安装两个容器,最近想升级下版本,发现有一个新镜像 rustdesk-server-s6 可以只安装一个容器。 The S6-overlay acts as a supervi…...
为什么要有override
多态一定会成功吗 因为逻辑是用户编写的,那么肯定会有遗漏的地方,那就要规则来限制。就比如多态,都知道条件之一是子类重写了父类的虚函数,但是如果子类没有严格遵守这个规则,就无法达到目的。就比如这个代码…...
Linux界的老古董
Slackware 是由 Patrick Volkerding 制作的 Linux 发行版,从 1993 年发布至今也一直在 Patrick 带领下进行维护。7 月 17 日,Slackware 才刚刚过完它 24 岁的生日,看似年纪轻轻的它,已然是 Linux 最古老的发行版。 Slackware 的发…...
安卓逆向 - Xposed入门教程
一、引言 Xposed框架,是Android中Hook技术的一个著名的框架,拥有非常丰富的模块,给我们分析app提供了极大的便利,Xposed框架是开源的。最高支持到Android 8(重要) github地址:GitHub - rovo89…...
【嵌入式】2024届校招岗位汇总
公司岗位博世嵌入式自动化测试工程师博世嵌入式开发(软件刷写及启动)工程师博世Linux/C软件工程师博世自动驾驶软件开发工程师博世嵌入式软件工程师(BSP)博世嵌入式电子工程师 (BMS&电源)博世物联网嵌入式开发工程师 …...
Docker搭建ELK日志采集服务及Kibana可视化图表展示
架构 ES docker network create elkmkdir -p /opt/ELK/es/datachmod 777 /opt/ELK/esdocker run -d --name elasticsearch --net elk -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -v /opt/ELK/es/plugins:/usr/share/elasticsearch/plugins -v /opt/…...
SpringBoot结合MyBatis实现多数据源配置
SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作,首先需要搭建Mybatis的运行环境。 由于是多数据源,也就是要有多个数据库,所以,我们创建两个测试数据库,分别是…...
单个vue echarts页面
<template> <div ref"history" class"echarts"></div> </template> <script> export default{ data () { return {}; }, methods: { history(){ let myChart this.$echarts.init(this.$refs.history); // 绘制图表 myCha…...
【web开发】6、Django(1)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Django是什么?二、使用步骤1.安装Django2.创建项目3.创建app4.快速上手5.模板继承 数据库操作1.安装第三方模块2.自己创建数据库3.DJango链接数据库…...
第29节-PhotoShop基础课程-滤镜库
文章目录 前言1.滤镜库2.Camera Raw滤镜 (用来对图片进行预处理,最全面的一个)3.神经滤镜(2022插件 需要先下载)4.液化(胖-> 瘦 矮->高)5.其它滤镜1.自适应广角2.镜头矫正 把图片放正3.消…...
空间(蓝桥杯)
空间 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,…...
蓝桥杯2023年第十四届省赛真题-更小的数--题解
目录 蓝桥杯2023年第十四届省赛真题-更小的数 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-更小的数 时间限制: 3s 内存限制: 320MB 提交: 895 解决: 303 题目描述 小蓝有一个长度均为 n 且仅由数字…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...
