针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)

 题目

【注】此版本严格按照数字版循环队列的写法,rear所代表的永远是空数据

图解

1.初始化部分和插入部分

2出队

3.分部代码解析

初始化

void init_cir_link_que(CirLinkQue& q)
{q.rear = q.front = (LinkList)malloc(sizeof(LNode));q.front->next = NULL;q.rear->next = q.front;
}

入队

bool insert_que(CirLinkQue& q, ElemType data)
{//此版本严格按照数组版本的结构,rear节点所代表数据永远为空if (q.rear->next == q.front){//表示现有空间已满,需额外开辟空间LinkList pnew = (LinkList)malloc(sizeof(LNode));q.rear->data = data;q.rear->next = pnew;pnew->next = q.front;q.rear = pnew;return true;}//不需要额外开辟空间//意思就是已经有出去过的数据了,但没有断链,可重复使用q.rear->data = data;q.rear = q.rear->next;return true;
}

 出队

bool pop_que(CirLinkQue& q, ElemType& data)
{//出队//判空if (q.rear == q.front){return false;}data = q.front->data;q.front->data = NULL;//可写可不写,后面新插入的数据会覆盖这些不要的数据q.front = q.front->next;return true;
}

全部可运行代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct node {ElemType data;struct node* next;
}LNode, * LinkList;typedef struct {LinkList front;LinkList rear;
}CirLinkQue;void init_cir_link_que(CirLinkQue& q)
{q.rear = q.front = (LinkList)malloc(sizeof(LNode));q.front->next = NULL;q.rear->next = q.front;
}bool insert_que(CirLinkQue& q, ElemType data)
{//此版本严格按照数组版本的结构,rear节点所代表数据永远为空if (q.rear->next == q.front){//表示现有空间已满,需额外开辟空间LinkList pnew = (LinkList)malloc(sizeof(LNode));q.rear->data = data;q.rear->next = pnew;pnew->next = q.front;q.rear = pnew;return true;}//不需要额外开辟空间//意思就是已经有出去过的数据了,但没有断链,可重复使用q.rear->data = data;q.rear = q.rear->next;return true;
}bool pop_que(CirLinkQue& q, ElemType& data)
{//出队//判空if (q.rear == q.front){return false;}data = q.front->data;q.front->data = NULL;//可写可不写,后面新插入的数据会覆盖这些不要的数据q.front = q.front->next;return true;
}
int main()
{CirLinkQue q;ElemType data;init_cir_link_que(q);insert_que(q, 1);insert_que(q, 2);insert_que(q, 3);pop_que(q, data);insert_que(q, 4);/*pop_que(q, data);insert_que(q, 5);pop_que(q, data);pop_que(q, data) ? puts("true") : puts("false");*/return 0;
}

4.运行结果图

动图展示也不太清晰,若不懂的可以手动操作一下感受一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446106.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++的随机数操作

首先想到的肯定是rand()函数&#xff0c;但是这个有点问题 引入头文件<stdlib.h> 如果不引入种子&#xff0c;它的随机数不是随机数&#xff0c;是固定的一串数字 srand()函数&#xff0c;产生随机的种子 示例&#xff1a; 产生0-99的随机数 #include<stdlib.h&g…

QD1-P5 HTML 段落标签(p)换行标签(br)

本节视频 www.bilibili.com/video/BV1n64y1U7oj?p5 ‍ 本节学习 HTML 标签&#xff1a; p标签 段落br标签 换行 ‍ 一、p 标签-段落 1.1 使用 p 标签划分段落 <p>段落文本</p>示例 <!DOCTYPE html> <html><head><meta charset"…

谷歌浏览器 文件下载提示网络错误

情况描述&#xff1a; 谷歌版本&#xff1a;129.0.6668.90 (正式版本) &#xff08;64 位&#xff09; (cohort: Control)其他浏览器&#xff0c;比如火狐没有问题&#xff0c;但是谷歌会下载失败&#xff0c;故推断为谷歌浏览器导致的问题小文件比如1、2M会成功&#xff0c;大…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

GO网络编程(五):海量用户通信系统3:整体框架与C/S通信总体流程【重要】

这个系统其实是尚硅谷的老韩讲的&#xff08;尚硅谷网络编程项目&#xff09;&#xff0c;但是他讲得很碎片化&#xff0c;思路不够清晰&#xff0c;时间又长&#xff0c;所以要掌握还是挺难的。如果你听了他的视频&#xff0c;不去梳理系统业务流程&#xff0c;不去看代码就往…

专题十一_递归_回溯_剪枝_综合练习_算法专题详细总结

目录 1. 找出所有⼦集的异或总和再求和&#xff08;easy&#xff09; 解析&#xff1a; 方法一&#xff1a; 解法二&#xff1a; 总结&#xff1a; 2. 全排列 Ⅱ&#xff08;medium&#xff09; 解析&#xff1a; 解法一&#xff1a;只关心“不合法”的分支 解法二&…

关于Linux下C++程序内存dump的分析和工具

前言 程序崩溃令人很崩溃&#xff0c;特别是让人找不到原因的崩溃&#xff0c;但是合适的工具可以帮助人很快的定位到问题&#xff0c;在AI基础能力ASR服务开发时&#xff0c;找到了一种比较实用和简单的内存崩溃的dump分析工具breakpad&#xff0c; 可以帮助在Linux下C开发程…

QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)

本节学习&#xff1a;HTML 格式化标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p8 ‍ 一、font 标签 用途&#xff1a;定义文本的字体大小、颜色和 face&#xff08;字体类型&#xff09;。 示例 <!DOCTYPE html> <html><head><meta cha…

难点:Linux 死机定位(进程虚拟地址空间耗尽)

死机定位(进程虚拟地址空间耗尽) 一、死机现象 内存富裕,但内存申请失败。 死机时打印: 怀疑是: 1、内存碎片原因导致。 2、进程虚拟地址空间耗尽导致。 3、进程资源限制导致。 二、内存碎片分析 1、理论知识:如何分析内存碎片化情况 使用 /proc/buddyinfo: /proc/…

CCF推荐被调查,这8本被标记On Hold

近两年“On Hold”期刊频出&#xff0c;作为投稿选刊风向标&#xff0c;上榜期刊一定要避雷投稿&#xff01;本期科检易学术小编盘点目前被科睿唯安官方标记为“On Hold”的计算机工程类的8本期刊&#xff0c;提醒广大学者&#xff0c;选刊需谨慎&#xff0c;注意避雷哦&#x…

Spark高级用法-内置函数

目录 读取数据 1.字符串 2.数值类 3.时间类型 4.条件判断 5.窗口函数 读取数据 # 内置数据集 from pyspark.sql import SparkSession,functions as F ss SparkSession.builder.getOrCreate()# 读取文件准尉df df ss.read.csv(hdfs://node1:8020/data/students.csv,hea…

【uniapp】使用uniapp实现一个输入英文单词翻译组件

目录 1、组件代码 2、组件代码 3、调用页面 4、展示 前言&#xff1a;使用uniapp调用一个在线单词翻译功能 1、组件代码 2、组件代码 YouDaoWordTranslator <template><view class"translator"><input class"ipttext" type"te…

JVM 内存模型与垃圾回收过程详解

JVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区 1.1 具体分区 Java虚拟机&#xff08;JVM&#…

计算机毕业设计 内蒙古旅游景点数据分析系统的设计与实现 Python毕业设计 Python毕业设计选题 Spark 大数据【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

06-ArcGIS For JavaScript-requestAnimationFrame动画渲染

文章目录 概述setInterval&#xff08;&#xff09;与setTimeout()requestAnimationFrame()requestAnimationFrame在ArcGIS For JavaScript的应用结果 概述 本节主要讲解与时间相关的三个方法setTimeout()、setInterval()和requestAnimationFrame()&#xff0c;这三个方法都属…

Java每日面试题(集合)(day18)

目录 常见的集合有哪些&#xff1f;Collection和Collections有什么区别&#xff1f;ArrayList 和 Array&#xff08;数组&#xff09;的区别&#xff1f;ArrayList 和 LinkedList 的区别是什么&#xff1f;Arraylist 和 Vector 的区别HashMap和Hashtable的区别哪些集合类是线程…

计算机丢失mfc100u.dll的5种常用解决方法分享

1.mfc100u.dll的重要性 系统运行中的应用 mfc100u.dll 文件在 Windows 系统中扮演着至关重要的角色&#xff0c;尤其是在运行基于 MFC 库开发的应用程序时。以下是 mfc100u.dll 在系统运行中的应用和重要性分析&#xff1a; 系统稳定性与兼容性的关键 mfc100u.dll 文件确保…

map和set(一)

首先模拟一下key形式类 使用的结构是搜索二叉树 结点中有左孩子和右孩子 还有一个存储的值 template <class K>struct BSTnode//搜索二叉树不支持修改 中序遍历是有序的{K _key;BSTnode<K>* _left;BSTnode<K>* _right;BSTnode(const K& key):_key(key…

adum1201数字隔离器中文资料与应用

ADuM1201是ADI公司推出的一款数字隔离器&#xff0c;其典型应用有工业自动化、通讯电源管理、医疗设备以及汽车等领域。本文将对ADuM1201数字隔离器进行详细的介绍和应用分析&#xff0c;以帮助读者更好地了解和使用该产品。 一、ADuM1201数字隔离器概述 1、基本参数 ADuM120…

卷积神经网络细节问题及知识点

一、Batch Normalization Batch Normalization&#xff08;BN&#xff0c;批归一化&#xff09; 是深度学习中的一种技术&#xff0c;主要用于加速神经网络的训练过程&#xff0c;同时提高网络的稳定性和收敛速度。它通过对每一层的输出进行归一化&#xff0c;减少梯度消失和梯…