当前位置: 首页 > news >正文

数据结构(c语言版) 队列

链队列

要求:实现链队列的创建、初始化、入队、出队 (先进先出)

代码

//
// Created by My.cy on 2023/10/19.
//
//链队列  创建、初始化、入队、出队   先进先出#include <stdio.h>
#include <malloc.h>//定义结构体
struct Node{int data;struct Node* next;
};//将头指针和尾指针封装在一起
struct FR{struct Node* front;struct Node* rear;
};//初始化
void init(struct Node* node, struct FR* fr){node->next = NULL;fr->front = node;fr->rear = node;
}//入队
void inqueue(struct FR* fr, int value){struct Node* NewNode = malloc(sizeof(struct Node));if(NewNode){NewNode->data = value;NewNode->next = NULL;fr->rear->next = NewNode;fr->rear = NewNode;printf("数据 %d 入队成功,地址为 %p \n",value, NewNode);}
}//显示队列
void isqueue(struct FR* fr){struct Node* temp = fr->front;while (temp->next != NULL){printf("%d-->", temp->next->data);temp = temp->next;}
}//出队列
void outqueue(struct FR* fr){if(fr->front->next == NULL){printf("出队列失败:队列为空!\n");}struct Node* temp = fr->front->next;int value = temp->data;if(temp->next == NULL){fr->front->next = NULL;free(temp);printf("数据 %d 出队列成功!\n",value);return;}fr->front->next = temp->next;free(temp);printf("数据 %d 出队列成功!\n",value);}int main(){struct Node node;struct FR fr;//初始化init(&node, &fr);printf("*********************链队列入队操作*********************\n");int value;printf("请输入入队的数据(输入0则结束):");scanf("%d",&value);while (value != 0){inqueue(&fr, value);printf("请输入入队的数据(输入0则结束):");scanf("%d",&value);}printf("\n*********************链队列显示操作*********************\n");isqueue(&fr);printf("\n*********************链队列出栈操作*********************\n");int out;printf("出队列输入1,结束输入0:");scanf("%d",&out);while (1){if(out == 1){outqueue(&fr);}if(out == 0){break;}printf("出队列输入1,结束输入0:");scanf("%d",&out);}printf("\n*********************链队列显示操作*********************\n");isqueue(&fr);printf("\n*********************链队列入队操作*********************\n");int value_1;printf("请输入入队的数据(输入0则结束):");scanf("%d",&value_1);while (value_1 != 0){inqueue(&fr, value_1);printf("请输入入队的数据(输入0则结束):");scanf("%d",&value_1);}printf("\n*********************链队列显示操作*********************\n");isqueue(&fr);}

运行结果

在这里插入图片描述

循环队列

要求:循环队列的 创建、入队列、出队列,显示队列 (计数器方法)

代码

//
// Created by My.cy on 2023/10/19.
//
//循环队列(计数器方法)     创建、入队列、出队列,显示队列       先进先出#include <stdio.h>
#define MAXSIZE 5struct C_S_Queue{int data[MAXSIZE];int front;int rear;int num;
};//初始化
void init(struct C_S_Queue* CSQ){CSQ->front = 0;CSQ->rear = 0;CSQ->num = 0;
}//入队列
void inQueue(struct C_S_Queue* CSQ, int value){if(CSQ->num == MAXSIZE){printf("入队列失败:队列为满队列!\n");return;}int index = CSQ->rear % MAXSIZE;CSQ->data[index] = value;CSQ->rear = (CSQ->rear + 1) % MAXSIZE;CSQ->num ++;printf("数据 %d 在数组的第 %d 位入队成功!\n",value, index+1);
}//出队列
void outQueue(struct C_S_Queue* CSQ){if(CSQ->num == 0){printf("出队列失败:队列为空队列!\n");return;}int index = CSQ->front % MAXSIZE;int value = CSQ->data[index];CSQ->front = (CSQ->front + 1) % MAXSIZE;CSQ->num --;printf("数据 %d 出队列成功!\n", value);
}//显示队列
void isQueue(struct C_S_Queue* CSQ){if(CSQ->num == 0){printf("显示队列失败:队列为空队列!\n");return;}int index = 1;int f = CSQ->front % MAXSIZE;while (index <= CSQ->num){printf("队列第 %d 位数据为 %d \n",index, CSQ->data[f]);f = (f+1)%MAXSIZE;index ++;}
}int main(){struct C_S_Queue CSQ;//初始化init(&CSQ);printf("*********************循环队列入队操作*********************\n");int value;printf("请输入入队的数据(输入0则结束):");scanf("%d",&value);while (value != 0){inQueue(&CSQ, value);printf("请输入入队的数据(输入0则结束):");scanf("%d",&value);}printf("*********************显示循环队列操作*********************\n");isQueue(&CSQ);printf("*********************循环队列出队操作*********************\n");int out;printf("出队列输入1,结束输入0:");scanf("%d",&out);while (1){if(out == 1){outQueue(&CSQ);}if(out == 0){break;}printf("出队列输入1,结束输入0:");scanf("%d",&out);}printf("*********************显示循环队列操作*********************\n");isQueue(&CSQ);printf("*********************循环队列入队操作*********************\n");int value_1;printf("请输入入队的数据(输入0则结束):");scanf("%d",&value_1);while (value_1 != 0){inQueue(&CSQ, value_1);printf("请输入入队的数据(输入0则结束):");scanf("%d",&value_1);}printf("*********************显示循环队列操作*********************\n");isQueue(&CSQ);}

运行结果

*********************循环队列入队操作*********************
请输入入队的数据(输入0则结束):123
数据 123 在数组的第 1 位入队成功!
请输入入队的数据(输入0则结束):23
数据 23 在数组的第 2 位入队成功!
请输入入队的数据(输入0则结束):34
数据 34 在数组的第 3 位入队成功!
请输入入队的数据(输入0则结束):445
数据 445 在数组的第 4 位入队成功!
请输入入队的数据(输入0则结束):142
数据 142 在数组的第 5 位入队成功!
请输入入队的数据(输入0则结束):0
*********************显示循环队列操作*********************
队列第 1 位数据为 123
队列第 2 位数据为 23
队列第 3 位数据为 34
队列第 4 位数据为 445
队列第 5 位数据为 142
*********************循环队列出队操作*********************
出队列输入1,结束输入01
数据 123 出队列成功!
出队列输入1,结束输入01
数据 23 出队列成功!
出队列输入1,结束输入00
*********************显示循环队列操作*********************
队列第 1 位数据为 34
队列第 2 位数据为 445
队列第 3 位数据为 142
*********************循环队列入队操作*********************
请输入入队的数据(输入0则结束):100
数据 100 在数组的第 1 位入队成功!
请输入入队的数据(输入0则结束):0
*********************显示循环队列操作*********************
队列第 1 位数据为 34
队列第 2 位数据为 445
队列第 3 位数据为 142
队列第 4 位数据为 100

相关文章:

数据结构(c语言版) 队列

链队列 要求&#xff1a;实现链队列的创建、初始化、入队、出队 &#xff08;先进先出&#xff09; 代码 // // Created by My.cy on 2023/10/19. // //链队列 创建、初始化、入队、出队 先进先出#include <stdio.h> #include <malloc.h>//定义结构体 struct…...

kimera论文阅读

文章目录 功能构成&#xff1a;Kimera线程A. Kimera-VIO:B. Kimera-RPGO:C. Kimera-Mesher:D. Kimera-Semantics:E.调试工具 功能构成&#xff1a; Kimera包括四个关键模块: Kimera-VIO的核心是基于gtsam的VIO方法[45]&#xff0c;使用IMUpreintegration和无结构视觉因子[27]…...

golang gorm通过泛型实现通用单表增删改

golang gorm通过泛型实现通用单表增删改 无废话&#xff0c;直接上代码 想实现通用&#xff0c;首先得实现查询的通用&#xff0c;可以用传递map实现 func Where(where map[string]interface{}) func(db *gorm.DB) *gorm.DB {return func(db *gorm.DB) *gorm.DB {dbTmp : db…...

十、K8S之ConfigMap

ConfigMap 一、概念 在K8S中&#xff0c;ConfigMap是一种用于存储配置数据的API对象&#xff0c;一般用于存储Pod中应用所需的一些配置信息&#xff0c;或者环境变量。将配置于 Pod 分开&#xff0c;避免应为修改配置导致还需要重新构建 镜像与容器。 二、创建 可以使用 ku…...

python飞书群机器人通过webhook发送消息

python飞书群机器人通过webhook发送消息 import json import loggingimport requestslogger logging.getLogger(__name__) logging.basicConfig(levellogging.DEBUG)class FeishuTalk:"""飞书群机器人通过webhook发送消息"""def __init__(self…...

埃隆·马斯克的 AI 聊天机器人 Grok 已经上线

昨天&#xff0c;埃隆马斯克 (Elon Musk) 通过他的公司 xAI 推出了一款名为 Grok 的新型人工智能聊天机器人。这款新的聊天机器人将通过 Twitter 更新实时获取世界知识&#xff0c;使其成为最新的对话 AI 系统。 Grok 的独特和基本优势在于它可以通过 &#x1d54f; 平台实时了…...

【代码随想录】算法训练营 第十五天 第六章 二叉树 Part 2

102. 二叉树的层序遍历 层序遍历&#xff0c;就是一层一层地遍历二叉树&#xff0c;最常见的就是从上到下&#xff0c;从左到右来遍历&#xff0c;遍历的方法依然有两种&#xff0c;第一种是借助队列&#xff0c;第二种则是递归&#xff0c;都算是很简单、很容易理解的方法&am…...

使用ssl_certificate_by_lua指令动态加载证书

1、下载 OpenResty - 下载 根据自己系统选择下载&#xff0c;我的是64位 2、解压到目录 3、启动openresty 进入解压后的目录&#xff0c;执行nginx.exe 浏览器输入 http://localhost 查看是否正常。显示以下画面就表示没有问题。 接下来可以开始准备动态安装证书 4、使用o…...

Qt中Opencv转Qimage出现重影或者颜色不对

废话不多说 在qt中opencv获取的图像转qimage时出现重影原因&#xff1a; 图像数据的内存对齐可能会导致画面重影&#xff0c;如果出现误差转换出来的图就会出现重影 解决办法&#xff1a; cv::Mat image_bgr cv::imread(“example.jpg”); cv::Mat image_aligned; cv::copyMak…...

upload-labs-1

文章目录 Pass-01 Pass-01 先上传一个正常的图片&#xff0c;查看返回结果&#xff0c;结果中带有文件上传路径&#xff0c;可以进行利用&#xff1a; 上传一个恶意的webshell&#xff0c;里面写入一句话木马&#xff1a; <?php eval($_POST[cmd]); echo "hello&quo…...

【vite配置路径别名@】/启动配置

npm install types/node --save-dev npm install path --save import { defineConfig } from vite import vue from vitejs/plugin-vue // 配置别名 import { resolve } from "path";// https://vitejs.dev/config/ export default defineConfig({plugins: [vue()]…...

3. List

数据结构在Java集合中的对应关系 线性表【数组】 -> ArrayList 线性表【链表】-> LinkedList 队列 -> Queue -> LinkedList&#xff0c;PriorityQueue, ArrayBlockingQueue … etc. 双端队列 -> Deque -> ArrayDeque 栈 -> LinkedList 哈希表 -> Hash…...

Django初窥门径-oauth登录认证

引言 在现代Web应用程序中&#xff0c;用户身份验证和授权是至关重要的组成部分。Django&#xff0c;一个流行的Python Web框架&#xff0c;为用户身份验证提供了内置支持。本文将探讨如何创建和注册Django应用&#xff0c;自定义身份验证服务&#xff0c;配置AUTHENTICATION_…...

数学到底在哪里支撑着编程?

数学到底在哪里支撑着编程&#xff1f; 除了少数算法等明显相关情况外&#xff0c;说点日常的。 编程是个极度依赖逻辑的领域&#xff0c;逻辑严谨性好&#xff0c;你的编程工作会顺畅很多一-绝大多 数的bug都是最近很多小伙伴找我&#xff0c;说想要一些嵌入式的资料&#x…...

Python模块ADB的, 已经 pyadb

Python模块ADB的使用指南_笔记大全_设计学院 (python100.com) pip install adb Python 调用ADB_python 调用adb命令_实相实相的博客-CSDN博客 Python ADB.shell_command Examples, pyadb.ADB.shell_command Python Examples - HotExamples Gitee 极速下载/PyADB - 码云 - 开…...

猫头虎分享从Python到JavaScript传参数:多面手的数据传递术

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

注解汇总:Spring 常用的注解

前言 本栏目的内容已经讲完了&#xff0c;本案例将把案例中所有讲到的注解都汇总起来&#xff0c;方便日后的学习需要用到的时候能够快速的找到相应的注解。本案例将结合小案例一起做汇总&#xff0c;也想丹玉是再复习一遍讲过用过的注解。 一、注解汇总 1、Component Reposi…...

合肥工业大学操作系统实验5

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少…...

基于SpringBoot+Vue的点餐管理系统

基于springbootvue的点餐平台网站系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 菜品详情 个人中心 订单 管理员界面 菜品管理 摘要 点餐管理系统是一种用…...

C# 继承,抽象,接口,泛型约束,扩展方法

文章目录 前言模拟需求场景模拟重复性高的需求初始类结构继承优化抽象类 需求1&#xff1a;打印CreateTime方法1&#xff1a;使用重载方法2&#xff1a;基类函数方法3&#xff1a;泛型约束方法3.1&#xff1a;普通泛型方法方法3.2&#xff1a;高级泛型约束&#xff0c;扩展方法…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...