当前位置: 首页 > 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…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...