2019-11-04-23:03:13

目录:

  1.常用的数据结构

  2.

  3.队列

  4.数组

  5.链表

  6.红黑树


常用的数据结构:

  包含:栈、队列、数组、链表和红黑树

栈:

  栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其 他任何位置进行添加、查找、删除等操作

  特点:

    1.先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹 夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的 子弹。

    2.栈的入口、出口的都是栈的顶端位置。

      名词注意:

        1.压栈:就是存元素。即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置

        2.弹栈:就是取元素。即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置。

        

队列:

  队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入, 而在表的另一端进行删除。

  特点:

    1.先进先出(即,存进去的元素,要在它前面的元素依次取出后,才能取出该元素)。例如,小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。

    2.队列的入口、出口各占一侧。例如,下图中的左侧为入口,右侧为出口

    

数组: 

  数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。就像是一排出 租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人。

  特点:

    1.查找元素快:通过索引,可以快速访问指定位置的元素

    

    2.增删元素慢 :

      指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根据索引,复制到新数组对应索引的位置。如下图

      

      指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应索引的位 置,原数组中指定索引位置元素不复制到新数组中。如下图

    

链表:

  链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动态生成

    结点:

      1.一个是存储数据元素的数据域

      2.一个是存储下一个结点地址的指针域。

    特点:

      1.多个结点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的右手拉住下个人的左手,依次 类推,这样多个人就连在一起了。

    

      2.查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素

      3.增删元素快

        增加元素:只需要修改连接下个元素的地址即可

        

        删除元素:只需要修改连接下个元素的地址即可

        

红黑树:

  二叉树:binary tree ,是每个结点不超过2的有序树(tree)

  特点:

    1.二叉树是每个节点多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树”和“右子树”。

    

  红黑树:二叉树的一种比较有意思的叫做红黑树,红黑树本身就是一颗二叉查找树,将节点插入后,该树仍然 是一颗二叉查找树。也就意味着,树的键值仍然是有序的

    红黑树的约束:

      1. 节点可以是红色的或者黑色的

      2. 根节点是黑色的

      3. 叶子节点(特指空节点)是黑色的

      4. 每个红色节点的子节点都是黑色的

      5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

    红黑树的特点:

      速度特别快,趋近平衡树,查找叶子元素少和多次数不多于二倍

Java之路---Day17(数据结构)的更多相关文章

  1. 我的Java之路

    前言: 之前在学习python,刚开始的时候跟多数小白一样学习一些基础的知识,比如数据类型,用法,基本的语言结构,学了一段时间实在是学习不下去了,真是太TMD的无聊了,很多方法都记不住,也不知道学了这 ...

  2. Python之路,Day17 - 分分钟做个BBS论坛

    Python之路,Day17 - 分分钟做个BBS论坛   本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考"抽屉新热榜" + "虎嗅网" 实现不同 ...

  3. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  4. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  5. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  6. Java之路 ——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

  7. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  8. 转行自学 Java 之路的纪念册

    前言: 最近在重读<小狗钱钱>,我对其中的"成功日记"概念特别深刻,偶尔也会记一记“成功日记”. 想了想人生走找到今天,阶段性“成功日记”有没有呢? 有的!几年前的一篇 ...

  9. 是什么让我走上Java之路?

    选择方向,很多人都为根据自己的兴趣爱好和自己的能力所长而作出选择.那么是什么让我走上Java之路? 整个高三我有两门课程没有听过课,一门是数学,一门是物理.当时候物理没有听课的原因很简单,我有一本&l ...

随机推荐

  1. 2017 ICPC网络赛(西安)--- Xor

    题目连接 Problem There is a tree with n nodes. For each node, there is an integer value ai, (1≤ai​≤1,000 ...

  2. Java面试题:JVM中的类加载机制

    JVM 的类加载机制是指 JVM 把描述类的数据从 .class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是 JVM 的类加载机制. 类 ...

  3. Transformer---GPT模型

    一.GPT(Generative Pre-Training) GPT-2的模型非常巨大,它其实是Transformer的Decoder.GPT-2是Transformer的Decoder部分,输入一个 ...

  4. Rust中的迭代器

    和闭包一样,练代码 struct Counter { count: u32, } impl Counter { fn new() -> Counter { Counter {count: } } ...

  5. Jenkins+sonar+jcoco+ivy做代码覆盖率

    首先,研发写的代码里要有单元测试相关的桩内容. 1.需要下载可用的jacoco.jar包配置到build.xml中 2.jenkins配置: sonar.projectKey=${JOB_NAME}s ...

  6. UML系列

    UML类图:https://www.cnblogs.com/shindo/p/5579191.html UML用例图:https://www.jianshu.com/p/3cde67aed8e9 UM ...

  7. Codeforces Global Round 4 题解

    技不如人,肝败吓疯…… 开场差点被 A 题意杀了,幸好仔细再仔细看,终于在第 7 分钟过掉了. 跟榜.wtf 怎么一群人跳题/倒序开题? 立刻紧张,把 BC 迅速切掉,翻到了 100+. 开 D.感觉 ...

  8. 《TP5.0学习笔记---模板变量输出、替换和赋值篇》

    原文地址:http://blog.csdn.net/self_realian/article/details/75214922 模板变量输出.替换和赋值 我们看一下文件编译的结果,我们知道我们现在写的 ...

  9. oracle 配置DBlink 链接mysql库

    一,环境配置与准备.简介 \ oracle mysql 主机名 oracle01 mysqlre1 IP 192.168.0.10 192.168.0.187 本文章是oracle通过dblink连接 ...

  10. GreenPlum 大数据平台--segment 失效问题恢复《二》(全部segment宕机情况下)

    01,情况描述 主Segment和它的镜像都宕掉.导致了greenplum数据库不可用状态 02,重启greenplum数据库 gpstop -r 03,恢复 gprecoverseg 04,状态检查 ...