常见数据结构

数据结构概述

数据结构是计算机底层存储、组织数据的方式,是指数据相互之间是以什么方式排列在一起的。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

栈数据结构的执行特点:后进先出,先进后出。

栈模型: 

压栈:

 

弹栈:

 

队列

队列执行特点:先进先出,后进后出

队列模型:

数据从后端进入队列模型的过程称为:入队列。

数据从前端离开队列模型的过程称为:出队列。

数组

元素在内存中是连续存储的。 

获取数据速度快:元素地址=基地址值+索引*每个元素的存储大小,获取任意数据耗时相同。

删除效率低:要将原始数据删除,同时后面每个数据前移。

添加效率极低:添加位置后的每个数据后移,再添加元素。

链表

特点:

链表中的元素是在内存中不连续存储的,每个元素节点包含数据值和下一个元素的地址。

链表获取数据慢:无论获取哪个数据都要从头开始找。 (对比数组)

链表增删相对快。(对比数组)

结点的存储结构:

添加一个链表:添加一个数据A,再添加c,再添加D。

在AC之间添加一个数据:

删除C:

链表的种类:

二叉树

二叉树概述

特点:

只能有一个根节点,每个节点最多支持2个直接子节点。

节点的度: 节点拥有的子树的个数,二叉树的度不大于2, 叶子节点是度为0的节点,也称之为终端结点。

高度:叶子结点的高度为1,叶子结点的父节点高度为2,以此类推,根节点的高度最高。

层:根节点在第一层,以此类推。

兄弟节点 :拥有共同父节点的节点互称为兄弟节点。

二叉查找树

二叉查找树又称二叉排序树或者二叉搜索树。

特点:

1,每一个节点上最多有两个子节点

2,左子节点的值小于当前节点的值

3,右子节点的值大于当前节点的值

目的:提高检索数据的性能。

二叉查找树添加节点:

小的存左边,大的存右边,一样的不存。

平衡二叉树

二叉树查找存在的问题:可能出现瘸子现象,导致查询的性能与单链表一样,查询速度变慢!

平衡二叉树是在满足查找二叉树的大小规则下,让树尽可能矮小,以此提高查数据的性能。

平衡二叉树的要求:

任意节点的左右两个子树的高度差不超过1,任意节点的左右两个子树都是一颗平衡二叉树。

平衡二叉树在添加元素后可能导致不平衡:

基本策略是进行左旋,或者右旋保证平衡。

平衡二叉树-旋转的四种情况:

左左

 当根节点左子树的左子树有节点插入,导致二叉树不平衡,做一个右旋,再移动相关结点。

左右

当根节点左子树的右子树有节点插入,导致二叉树不平衡,先子树左旋,再根树右旋,再移动相关结点。

右右

当根节点右子树的右子树有节点插入,导致二叉树不平衡,做一个左旋,再移动相关结点。

右左

当根节点右子树的左子树有节点插入,导致二叉树不平衡,先子树右旋,再根树左旋,再移动相关结点。

红黑树

红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。

1972年出现,当时被称之为平衡二叉B树。1978年被修改为如今的"红黑树"。

每一个节点可以是红或者黑;红黑树不是通过高度平衡的,它的平衡是通过“红黑规则”进行实现的。

红黑规则:

每一个节点或是红色的,或者是黑色的,根节点必须是黑色

如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的;

如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)

对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。

结点的存储结构:

添加节点:

添加的节点的颜色,可以是红色的,也可以是黑色的。 默认用红色效率高。

红黑树增删改查的性能都很好。

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

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

相关文章

基于ssm一中体育馆管理系统的设计与实现论文

镇赉县一中体育馆管理系统的设计与实现 摘要 随着信息互联网购物的飞速发展,一般有能力的机构管理系统。本文介绍了镇赉县一中体育馆管理系统的开发全过程。通过分析企业对于镇赉县一中体育馆管理系统的需求,创建了一个计算机管理镇赉县一中体育馆管理…

spring 笔记八 SpringMVC异常处理和SpringMVC拦截器

文章目录 SpringMVC拦截器拦截器(interceptor)的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC拦截器拦截器(interceptor)的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC异常处理异常处理…

为了吃鸡苦练狙击,避免坑队友自己造一个狙击游戏!

引言 一文教会你造一个简易的狙击游戏。 说到狙击,相信大家都不陌生,无论是影视作品还是网络游戏,都经常能看到狙击枪的身影,最深刻的是它能够从百里之外,一枪爆头。 本文将介绍如何在Cocos Creator中造一个简易的狙…

Axie Infinity 之后,Ronin 的潜力何在?

作者:stellafootprint.network 数据来源:Ronin Dashboard 备受欢迎的 Web3 游戏 Pixels 在 2023 年 10 月下旬从 Polygon 迁移到了专为游戏设计的区块链 Ronin。Pixels 此前作为 Polygon 上活跃用户(钱包数量)最多的 Web3 游戏&…

『OPEN3D』1.5.2 动手实现点云栅格/体素最近邻

本专栏地址: https://blog.csdn.net/qq_41366026/category_12186023.html?spm=1001.2014.3001.5482 NEARBY6实现的voxel可视化 一种NEARBY14实现的可视化voxel

CT成像技术—20231210

本文要说的是扇束重排,对于扇束及锥束直接重建公式,可以看我做的PDF https://github.com/leslielee619/CTRec/blob/main/重建公式.pdf 在说重排之前,我还想对那个文件内容补充两点: 1、FDK算法或Feldkamp算法,出自Fel…

springAop有哪五种通知类型?可根据图标查看!

Spring AOP的通知类型有以下几种(后面是图标变化): 1.Before通知: 在目标方法执行前执行。 上白下红,方法前执行。 2.After通知: 在目标方法执行后(无论是否发生异常)执行。 图标…

实验06:VLAN配置

1.实验目的: VLAN(Virtual Local Area Network)是一种通过逻辑方式而不是物理方式划分局域网的技术,可以提高网络性能、安全性和管理效率。VLAN的划分方法有基于端口、基于MAC地址、基于协议和基于IP组播等。VLAN之间的通信需要路…

第十一章 React 封装自定义组件

一、专栏介绍 🌍🌍 欢迎加入本专栏!本专栏将引领您快速上手React,让我们一起放弃放弃的念头,开始学习之旅吧!我们将从搭建React项目开始,逐步深入讲解最核心的hooks,以及React路由、…

2024 年值得收藏的 10 款 iPhone 数据恢复软件评论

iPhone 让您将数字生活装在口袋里。从您所爱之人的照片和视频,到与学校和工作相关的文档,再到重要的备忘录和日历约会,iPhone 内的微型存储芯片可以容纳的数据量是惊人的。 唯一的问题是,很快就会丢失这些数据。一次错误的点击或…

320科技工作室ZEMAX培训通知

一 软件介绍 ZEMAX是一套综合性的光学设计软件。它提供先进的、且符合工业标准的分析、优化、公差分析功能,能够快速准确的完成光学成像及照明设计。 二 培训方式 本次培训全程线上授课, 采用一对一或者一对多方式进行, 以视频方式授课,工程案例讲解&…

WebGL+Three.js入门与实战——给画布换颜色、绘制一个点、三维坐标系

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…