链队列的基本操作(带头结点,不带头结点)
结构体
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 且仅由数字…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
