• Java 数据结构快速入门


    数据结构:栈

    简介

    栈(stack),又称堆栈,它是运算受限的线性表。

    限制

    栈(stack)的限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。

    采用该结构的特点

    1、先进后出(即:存进去的元素,要在后它后面的元素依次取出后,オ能取出该元素)。

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

    例如

    子弹压进弹夹先压进去的子弹在下面,后压进去的子弾在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的子弹。

    说明

    栈(stack):弹夹

    入栈(压栈):向弹夹中添加子弹

    出栈(弹栈):子弹从弹夹中弹出来

    数据结构:队列

    简介

    队列(queue),简称队,它同堆栈一样,也是一种运算受限的线性表。

    限制

    队列的限制是仅允许在表的一端进行插入而在表的另一端进行删除。

    采用该结构的特点

    1、先进先出(即:存进去的元素,要在后它前面的元素依次取出后,オ能取出该元素)。

    2、队列的入口、出口各占一侧。

    例如

    小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。

    数据结构:数组

    简介

    数组(Array)是有序的元素序列,数组是在堆内存中开辟一段连实的空间,并在此空间存放元素。

    采用该结构的特点

    1、查找元素快

    2、增删元素慢

    为什么说数组查找元素快,增删元素慢

    1、数组查询快:数组的地址是连续的我们通过数组的首地址可以找到数组,通过数组的素引可以快速查找某一个

    2、元素增删慢:数组的长度是固定的我们想要增加/删除一个元素,必须创建一个新数组把源数组的数据复制过来

    3、增删元素,会在堆内存中频繁的创建新数组、复制数组中的元素、销毁数组,导致效率低下

    例如

    一排出租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人。

    数据结构:链表

    简介

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

    每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储结点地址的指针域。

    链表结构有单向链表与双向链表

    单向链表

    链表中只有一条链子,不能保证元素的顺序(存储元素和取出元素的顺序有可能不一致)

    双向链表

    链表中有两条链子有一条链子是专门记录元素的顺序,是一个有序的集合

    说明

    链表中的每一个元素也称之为一个节点

    一个节点包含了一个数据源(存储数据),两个指针域(存储地址),一个指针域存储本节点的地址,一个指针域存储第一个节点的地址

    采用该结构的特点

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

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

    增删元素快:增加或删除某个元素只需修改一下连接元素之间的地址值即可

    为什么说链表查询慢,增删快

    查询慢:链表中地址不是连续的每次查询元素都必须从头开始查询

    增删快:链表结构增加/删除一个元素对链表的整体结构没有影响,所以增删快

    图形理解

    每个node

     单向链表node之间的连接(无序的)

     双向链表node之间的连接(有序的)

     假如想要增删数据,只需更改连接下一个node的地址值即可

    数据额结构:红黑树

    首先简单了解一下计算机中的树(如图:“下面分支的连接不是箭头,而是线”)

     什么是二叉树

    分支不能够超过两个的树

    如:

    什么是排序树/查找树

    在二叉树的基础上,元素是有大小顺序的,左子树小,右子树大

    如:

     平衡树

    左子树 = 右子树

    如:

     不平衡树

    左子树 != 右子树

    如:

    红黑树

    特点

    趋近于平衡树,查询的速度非常的快,查询叶子节点最大次数和最小次数不能超过2倍

    约束

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

    2.根节点是黑色的

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

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

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

    例如:

  • 相关阅读:
    TensorFlow简易学习[3]:实现神经网络
    TensorFlow简易学习[2]:实现线性回归
    TensorFlow简易学习[1]:基本概念和操作示例
    [转]概念:结构化数据、半结构化数据、非结构数据
    SIP简介
    Flask
    vue项目中的常见问题
    为什么java中用枚举实现单例模式会更好
    20道Java面试必考题
    Java面试题(二)
  • 原文地址:https://www.cnblogs.com/liyihua/p/12188539.html
Copyright © 2020-2023  润新知