关键词:
<font color="pink">数据结构= 程序 + 算法 </font>
-
数据结构有什么用
当我们使用着java官方给你提供的容器的时候,我们用起来是非常方便的,ArrayList其实是一个无线扩充的数据LinkedList其实是一个链表。 现实世界中存储数据,我们要通过一些工具或者建模来进行存储。每种数据结构都有自己的优缺点。 而算法,在这么多的数据中如果以最快的速度实现插入,删除,查找数据问题 我们java语言是一种面向对象的编程语言,java就相当于自动档汽车,C语言相当于手动挡汽车,python就是无人驾驶汽车,数据结构相当于变速箱的工作原理,如果你懂变速箱的工作原理,那么不但可以开车,也可修车,还可以造车 数据结构内容非常多,我们接收java当中常见的数据结构:堆栈,队列,数组,链表和红黑树
-
常见的数据结构:
数据存储的常见结构:栈,队列,数组,链表,和红黑树。
-
栈
栈,stack,又称为堆栈,他是运算受限的线性表结构,它的限制是仅允许在标的一端插入和删除操作,不允许在其他任何位置进行添加,查找,删除等操作。
简单的说,采用结构的集合,对元素的存取有以下特点
-
先进后出(存进去的元素,要在他后面的元素依此取出后,再能取出该元素)。例如:子弹压进弹夹的动作
- 栈的入口,出口都是栈的顶端位置。
空栈:栈顶栈底相等
压栈:存储元素,元素存储到栈的顶端位置,栈中已有的元素依此向栈底移动一个位置。
弹栈:取元素,栈的顶端位置元素取出,栈中已有元素依此向栈顶方向移动一个位置。
-
-
队列
队列,queue,简称对,它同堆栈几乎一样的,也是一种受限制的线性表结构,它的限制是仅允许在标的一端进行插入,在标的另一端进行删除。
简单的说,采用该结构的集合,对元素的存储有以下特点:
-
先进先出(存进去的元素,要在他前面的元素依此取出后,才能取出该元素)。列如:火车过隧道,火车头先从山洞出来,车尾后出来。
- 队列的入口,出口各占一侧。
-
-
数组
数组,Array,是有序的元素序列,数组在内存当中开辟一段连续的空间,并再此空间内存储元素。列如:生活中的酒店当中的房间号是连续的,不间断,有50个房间,从001--050每个房间都有固定的编号,通过编号就可以快速找到酒店房间的住户。
简单的说,采用此结构的集合,对元素取出有以下特点:
<img src="image137b3856-0ae2-4eb9-9d5a-45d387c60da2.jpg" style="zoom:20% ;" />
-
查找元素块,通过索引,可以快速的访问到指定位置的元素。
- 增删元素慢。
<img src="imageSnipaste_2020-12-02_15-51-23.png" title="style" style="zoom:80%;" />
- 指定索引位置增加元素 :需要创建一个新数组,将指定的新元素存储到指定的索引位置,再把原数组元素根据它原来的索引,赋值到新数组对应的索引位置。
- 指定索引位置删除元素:需要创建一个新数组,把原数组的元素根据索引,复制到新数组对应的索引位置,原数组中的指定索引元素复制到新数组当中。
-
链表结构
-
链表,linked list,由一系列结点node(链表当中的每一个元素称为节点)组成,节点可以在运行时动态生成。每个节点包含两个部分;存储数据元素的数据域;用来存储下一个节点的指针域。我们常说的链表结构有单向列表和双向链表
链表对元素的存取的特点
-
多个节点之间,通过地址进行连接。比如:多个人玩丢手绢,每个人右手拉住下一个人的左手,上一个人的左手拉着该人的右手,以此类推,多个人就被连接起来了。
-
查询元素比较慢:想要查找某个元素,需要通过连接的节点,依此向后查询指定的元素。
- 删除元素比较快:
-
增加一个元素:只需要修改连接下一个元素的地址即可。
- 删除一个元素:只要修改连接下一个元素即可。
-
-
链表结构的特点
查询慢:链表结构的地址不是连续的,每次查询元素,都必须从头开始查询。
增删快:链表结构中,对
红黑树
-
二叉树: binary tree ,每个节点数不超过2的数(tree)
简单的理解,就是类似于我们生活中的数的结构,只不过每个节点上最多只能有两个子节点。
顶上的节点称为根节点,两边的称为左子树,右子树
-
红黑树的约束:
- 节点可以是红色的也可以是黑色的
- 根节点是黑色的
- 叶子节点(空节点)是黑色的
- 每个红色节点的子节点都是黑色的
- 任何一个节点到其每一个叶子节点的所有路径上的黑色节点数是相同的
-
红黑树的特点:
查询速度非常快,趋近于平衡树,查找叶子元素最小和最大不能超过2倍。
树结构(代码片段)
...构都可以用树形象的表示;既然自然界中存在这种结构的数据,那计算机中也需要相应的数据结构来存储;在计算机领域树结构也有着广泛的应用,如编译程序中使用树表示语法结构,数据库中用树(索引)来组织数据,分析算法行为时可... 查看详情
数据结构和算法(初涉)(代码片段)
一、绪论程序设计=数据结构+算法数据结构→数据元素相互之间存在的一种或多种特定关系的集合数据结构分为逻辑结构和物理结构逻辑结构:数据对象元素之间的相互关系物理结构:数据的逻辑结构在计算机中的... 查看详情
数据结构-线性表(代码片段)
数据结构系列文章目录数据结构三要素——逻辑结构、数据的运算、存储结构(物理结构)小提:储存结构不同,运算的实现方式不同。从此博客开始到后续的一段时间,都是计蒙本人在为考研做准备。不定... 查看详情
数据结构-线性表(代码片段)
数据结构系列文章目录数据结构三要素——逻辑结构、数据的运算、存储结构(物理结构)小提:储存结构不同,运算的实现方式不同。从此博客开始到后续的一段时间,都是计蒙本人在为考研做准备。不定... 查看详情
从原子结构--pn结原理--光伏发电(代码片段)
....csdn.net/hjwdz2015/article/details/108884868,尊重原创1、原子结构原子由原子核和围绕原子核旋转的电子构成。如果将原子比作一棒球场,那么原子核大大小不比一个棒球大,但原子的所有重量都集中在原子核上,而电子... 查看详情
从原子结构--pn结原理--光伏发电(代码片段)
....csdn.net/hjwdz2015/article/details/108884868,尊重原创1、原子结构原子由原子核和围绕原子核旋转的电子构成。如果将原子比作一棒球场,那么原子核大大小不比一个棒球大,但原子的所有重量都集中在原子核上,而电子... 查看详情
immutable使用(代码片段)
1.来源Immutable.js出自Facebook,是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构,通过使用像tries这样的先进技术来实现结构共享。所有的更新操作都会返回新的值,但是在内部结构是共享的,来减少内存占... 查看详情
数据结构复习总结(代码片段)
数据结构线性表栈和队列树和二叉树图排序线性表1.统计单链表中结点的值小于给定值x的结点数intCount(Linklisthead)intc=0;Linklistp;p=head->next;while(p)if(p->data<x)c++;p=p->next;returnc;2.已知L1,L2分别为两循环单链表的头... 查看详情
树——存储结构(代码片段)
.../树中最多的结点数typedefstruct //树的结点定义ElemTypedata; //数据元素intparent; //双亲位置域PTNode;typedefstruct //树类型定义PTNodenodes[MAX_TREE_SIZE]; //双亲表示, 查看详情
数据结构树---二叉树实现(代码片段)
(一)顺序结构创建二叉树#include<stdio.h>#include<stdlib.h>#include<math.h>#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineMAXSIZE100//存储空间初始分配量#defineMAX_TREE_SIZE100//二叉树的最大结点数typedefch 查看详情
pandas知识点超全总结(代码片段)
Pandas知识点超全总结一、数据结构1、Series1.创建2.切片、修改3.其他属性2、DataFrame1.创建2.切片3.增加、修改4.删除5.查看二、读写数据1、读数据1.excel文件2.csv文件3.sql文件2、写数据三、数据处理、分析1、基础操作2、分组聚合1.分... 查看详情
c++哈希表查询_进入哈希函数结界的世界(代码片段)
...哈希表或称为散列表,是一种常见的、使用频率非常高的数据存储方案。哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行API定制,对于大部分高级语言而言,都会提供已经实现好的、可直接使用的API,如... 查看详情
数据结构(十四)——二叉树(代码片段)
数据结构(十四)——二叉树一、二叉树简介1、二叉树简介二叉树是由n(n>=0)个结点组成的有序集合,集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二叉树的五种形态:... 查看详情
构化数据半结构化数据和非结构化数据(代码片段)
结结构化数据结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:idnameagegender1lyh12male2liangyh13f... 查看详情
如何理解mysql的索引?(代码片段)
...的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就... 查看详情
数据结构与算法学习笔记线性表ⅱ(代码片段)
数据结构与算法学习笔记(4)线性表Ⅱ文章目录数据结构与算法学习笔记(4)线性表Ⅱ一.线性表的链式表示和实现1.链式存储结构情境引入2.链式存储相关术语结点链表单链表、双链表、循环链表头指针、头结点和首元结点单链表的... 查看详情
重温四大基础数据结构:数组链表队列和栈(代码片段)
前言本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。数组、链表、队列、栈,是数据结构中最基础的四大结构,数组和链表更是基础中... 查看详情
数据结构-二叉树(代码片段)
基本概念二叉树:一个有穷的结点的集合,这个集合可以为空,若不为空,则它是由根节点和称为其左子树和右子树的两个不相交的二叉树组成。有几种特殊的二叉树,分别是斜二叉树、完全二叉树和满二叉树。二叉树的几个重... 查看详情