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

链式栈,队列与树形结构

链式栈

链式存储的栈

实现方式:可以使用单向链表完成

对单向链表进行头插(入栈)、头删(出栈),此时链表的头部就是链栈的栈顶,链表的尾部,就是链栈的栈底

队列

概念

队列:操作受限的线性表,插入和删除只能在异端操作

队列的特点:先进先出(FIFO),后进后出(LILO

队头:可以进行删除的一段

队尾:可以进行插入的一段

队列的种类:顺序队列,链式队列

顺序队列

顺序存储的队列(保证存储的数据逻辑上相邻,物理内存上也相连,还要保证符合队列的特点)

顺序队列的组成

需要一片连续的空间存放数据(数组,堆区的一片连续的空间)

需要一个变量记录队头的位置

需要一个变量记录队尾的位置(最后一个元素的下一个元素的位置)

假溢满现象

还有位置存放数据,但是队尾已经到了顺序队列的最大容量的位置

所以一般采用循环队列来完成顺序队列的存储

循环顺序队列

循环顺序队列的组成

需要一片连续的空间存放数据(数组,堆区的一片连续的空间)

需要一个变量记录队头的位置

需要一个变量记录队尾的位置(最后一个元素的下一个元素的位置)

循环顺序队列的结构体原型

//宏定义 循环顺序队列的最大容量
#define MAX 30//类型重定义,表示要存储数据的类型
typedef int DataType;//定义循环顺序队列的结构体类型
typedef struct sequence
{DataType data[MAX]; //用数组存放数据,实现逻辑相连,物理内存也相连int front; //记录队头所在的位置int tail; //记录队尾所在的位置
}queue,*queuePtr;

循环顺序队列的相关操作(功能函数的封装)

创建

函数返回值:顺序栈的指针

参数列表:无

判断申请空间是否合法

判空

参数列表:顺序队列

判断申请空间是否合法

判满

参数列表:顺序队列

判断申请空间是否合法

入队

参数列表:顺序队列,入队的值

判断申请空间是否合法

需要判满

遍历

参数列表:顺序队列

判断申请空间是否合法

需要判空

出队

参数列表:顺序队列

判断申请空间是否合法

需要判空

顺序队列的大小

参数列表:顺序队列

判断申请空间是否合法

销毁

参数列表:顺序队列

判断申请空间是否合法

链式队列

链式存储的队列(保证存储的数据逻辑上相连,物理内存上随机存储,保证满足队列的特点)

链式队列的组成

需要一片连续的空间存放数据(数组,堆区的一片连续的空间)

需要一个变量记录队头的位置

需要一个变量记录队尾的位置(最后一个元素的下一个元素的位置)

链式队列的节点的结构体原型

//重命名
typedef int DataType;
typedef struct node
{union{int len;DataType data;};struct node *next;
}Node;typedef struct queue
{Node *front;    //记录队头Node *tail;    //记录队尾}queueLink,*queueLinkPtr;

链式队列的相关操作(功能函数的封装)

创建

参数列表:无

判断申请空间是否合法

判空

参数列表:顺序队列

判断申请空间是否合法

入队(尾插)

参数列表:顺序队列,入队的数据

判断申请空间是否合法

遍历

参数列表:顺序队列

判断申请空间是否合法

需要判空

出队(头删)

参数列表:顺序队列

判断申请空间是否合法

需要判空

队列的大小

参数列表:顺序队列

判断申请空间是否合法

需要判空

销毁

参数列表:顺序队列

判断申请空间是否合法

需要判空

 

树形结构:数据元素存在一对多的关系

二叉树

每个节点最多拥有两个子节点,并且有严格的左右子树区分的树形结构

二叉树的相关概念

左子树:以当前节点的左孩子节点为根节点的子树,称为左子树。

右子树:以当前节点的右孩子节点为根节点的子树,称为右子树。

左斜树:每个节点只有左孩子节点,没有右孩子节点的树,称为左斜树。

右斜树:每个节点只有右孩子节点,没有左孩子节点的树,称为右斜树。

满二叉树:在不增加层次的基础上,不能在往树上增加节点。

完全二叉树:在满二叉树的基础上,从左往右依次增加节点的树,称为完全二叉树。

二叉树的相关概念

1、在第i层上,最多有2^(i-1)个节点
2、在第K层上,最多总共拥有 2^K-1 节点
3、在一个树上,度为0的节点(叶子节点)总比度为2的节点个数多一个。总节点个数  = 总度数 +1;
// n0 度0    n1 度1   n2 度2n0+n1+n2 = 1*n1 + 2*n2 + 1
n0 + n1 + n2 = n1 + 2n2 +1
n0 = n2 +1

二叉树的存储

满二叉树或者完全二叉树可以采用顺序存储,普通二叉树一般采用链式存储

相关文章:

链式栈,队列与树形结构

链式栈 链式存储的栈 实现方式:可以使用单向链表完成 对单向链表进行头插(入栈)、头删(出栈),此时链表的头部就是链栈的栈顶,链表的尾部,就是链栈的栈底 队列 概念 队列&#…...

Android历史版本与APK文件结构

前言 在移动设备日益普及的今天,Android系统已经成为全球最流行的移动操作系统。作为Android开发者或逆向工程师,了解Android系统的演进历史以及APK文件的基本结构是非常重要的。本文将详细介绍Android历史版本的演变以及APK的基本结构。 一、Android历…...

文件解析漏洞集合

IIS解析漏洞 IIS6 目录解析 在网站下建立文件夹的名字为.asp/.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp 文件来解析并执行。 这里显示的是 1.asp下的1.jpg,按照道理来说里面的文件是一个图片,但是访问的话,会出…...

如何利用大语言模型进行半监督医学图像分割?这篇文章给出了答案

PS:写在前面,近期感谢很多小伙伴关注到我写的论文解读,我也会持续更新吖~同时希望大家多多支持本人的公主号~ 想了解更多医学图像论文资料请移步公主👸号哦~~~后期将持续更新!! 关注我,让我们一…...

库文件的制作和makefile文件操作基础实现

库文件包括静态库和动态库: 制作动态库命令如下: gcc -fPIC -shared xxx.c xxx.c -o libxxx.so xxx表示文件名 最后会生成一个libxxx.so文件 。这个so文件就是库文件。(若是用到了自己写的.c和.h文件,需要在同一目录下哦&…...

【Linux】进程创建进程终止进程等待

目录 一、进程创建1.1 写时拷贝1.2 frok的常规用法1.3 fork调用失败的原因 二、进程终止2.1 进程退出码2.2 进程退出方式2.2.1 exit函数的使用2.2.2 _exit函数的使用2.2.3 exit函数与_exit函数的区别 2.3 进程信号 三、进程等待3.1 进程等待的必要性3.2 进程等待的方式3.2.1 wa…...

编程的进阶和并发之路

编程的进阶和并发之路 博主在这谈并发,是因为单进程的资源是全局共享,函数作为局部空间来分担分布式计算的过程,掌握并发等于熟悉流式计算和程序执行的通量快速到达结束点。在大数据初期阶段,经验开发缺乏很多模拟数据&#xff0…...

文件系统 --- 文件结构体,文件fd以及文件描述符表

序言 在编程的世界里,文件操作是不可或缺的一部分。无论是数据的持久化存储、日志记录,还是简单的文本编辑,文件都扮演着至关重要的角色。然而,当我们通过编程语言如 C、Java 等轻松地进行文件读写时,背后隐藏的复杂机…...

【第三节】python中的函数

目录 一、函数的定义 二、函数的调用 三、函数的参数 3.1 可变与不可变对象 3.2 函数参数传递 3.3 参数类型 四、匿名函数 五、函数的return语句 六、作用域 七、python的模块化 八、 main 函数 一、函数的定义 函数是经过精心组织、可重复使用的代码片段&#xff0…...

“论云原生架构及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器和微服务架构为代表的云原生技术作为云计算服务的新…...

深度剖析Google黑科技RB-Modulation:告别繁琐训练,拥抱无限创意生成和风格迁移!

给定单个参考图像,RB-Modulation提供了一个无需训练的即插即用解决方案,用于(a)风格化和(b)具有各种提示的内容样式组合,同时保持样本多样性和提示对齐。例如,给定参考样式图像(例如“熔化的黄金3d渲染样式”)和内容图像(例如(a)“狗”),RB-Modulation方法可以坚持所需的提…...

react native 和 flutter 区别

React Native 和 Flutter 都是用于构建跨平台移动应用的优秀框架,各有其优点和适用场景。 1. React Native 1.1 优点 | 基于 JavaScript 生态:对于熟悉 JavaScript 和 React 的开发者来说,学习成本相对较低,能够利用大量现有的 …...

ITSS服务经理/ITSS服务工程师,招投标需要准备吗?

信息技术服务标准(ITSS)是中国首套完整的信息技术服务标准体系,全面规定了IT服务产品及其组成要素的标准化实施,旨在提供可信赖的IT服务。 在国际竞争日益激烈的背景下,推动国内标准的国际化已成为广泛共识&#xff0…...

eleven接口、多态

能够写出接口的定义格式 public interface 接口名 { public static final 数据类型 名称 数据值; //抽象方法: 必须使用实现类对象调用 void method(); //默认方法: 必须使用实现类对象调用 public default void show() {...} …...

重磅惊喜!OpenAI突然上线GPT-4o超长输出模型!「Her」高级语音模式已开放测试

在最近的大模型战争中,OpenAI似乎很难维持霸主地位。虽然没有具体的数据统计,但Claude3.5出现后,只是看网友们的评论,就能感觉到OpenAI订阅用户的流失: Claude3.5比GPT-4o好用,为什么我们不去订阅Claude呢&…...

解决问题 CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasGemmEx

遇到问题如下&#xff1a; Traceback (most recent call last):File "run_warmup_a.py", line 431, in <module>main()File "run_warmup_a.py", line 142, in mainreturn main_worker(args, logger)File "run_warmup_a.py", line 207, in…...

【Python实战因果推断】67_图因果模型2

目录 Are Consultants Worth It? Crash Course in Graphical Models Chains Are Consultants Worth It? 为了展示有向无环图(DAG)的力量&#xff0c;让我们考虑一个更有趣但处理因素并未随机化的情况。假设你是某公司的经理&#xff0c;正在考虑是否聘请顶级咨询顾问。你…...

RK3588+MIPI+GMSL+AI摄像机:自动车载4/8通道GMSL采集/边缘计算盒解决方案

RK3588作为目前市面能买到的最强国产SOC&#xff0c;有强大的硬件配置。在智能汽车飞速发展&#xff0c;对图像数据矿场要求越来越多的环境下&#xff0c;如何高效采集数据&#xff0c;或者运行AI应用&#xff0c;成为刚需。 推出的4/8通道GMSL采集/边缘计算盒产品满足这些需求…...

智云-一个抓取web流量的轻量级蜜罐

智云-一个抓取web流量的轻量级蜜罐 安装环境要求 apache php7.4 mysql8 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN 系统演示...

面向对象程序设计之sort排序

目录 java 升序 降序 c# 升序 倒序 小结 敲过排序算法的都会的&#xff0c;Sort排序与compareTo的改写。 java 升序 一般自带的sort方法就是升序的。 Arrays.sort(arr);//传入要排序的数组&#xff0c;默认升序 Collections.sort(list);//传入要排序的集合类&am…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...