数据结构:栈

简介

栈(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.任何一个节点到其每个叶子节点的所有路径上黑色节点数相同

例如:

原文:https://www.cnblogs.com/liyihua/p/12188539.html

java 数据结构 快速入门_Java 数据结构快速入门相关推荐

  1. java线程入门_java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  2. java程序员入门_Java程序员入门:简介

    java程序员入门 背景 Go (通常称为" Golang")是一种相当新的编程语言,于2007年首次提出,并于2012年发布了1.0版.它的三位发明者目前都是Google员工,具 ...

  3. java程序设计入门_Java程序设计从入门到精通

    Java程序设计从入门到精通 编辑 锁定 讨论 上传视频 <Java程序设计从入门到精通>是2018年1月电子工业出版社出版的图书,作者是毛雪涛.丁毓峰. 书    名 Java程序设计从 ...

  4. java vector内存结构_Java 数据结构

    Java工具包提供了强大的数据结构.在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictio ...

  5. java 脚本引擎性能_Java SE 6 入门之脚本引擎加大程序性能

    Java SE 6 入门之脚本引擎加大程序性能 Java SE 6较Java SE5有了很大的改进,它的性能更强,而且是专为Vista所设计,这就象征着Java SE 6将是Vista上的最佳抉择.而 ...

  6. java 二维链表_Java数据结构与算法----数组与链表

    数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...

  7. java 线性表定义_Java数据结构的线性表是怎样的

    Java数据结构--线性表的顺序存储实现 一.描述 线性结构特点: (1)存在唯一的一个被称作"第一个"的数据元素 (2)存在唯一的一个被称作"最后一个"的数据 ...

  8. java开发程序员_Java大牛给入门Java开发程序员的10个学习建议

    Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理. 纸上得来终觉浅,绝知此事要躬行. 学习Java基础的时候,应 ...

  9. java快排原理_Java数据结构与算法——快速排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中最常用也是面试中最容易考到的排序算法--快排,包括快排的思 ...

最新文章

  1. 原生socket穿透HTTP代理服务器
  2. MyEclipse 设置字体
  3. SpringBoot Controller接收参数的几种常用方式
  4. python主线程执行_Python队列 – 最多运行n个线程
  5. openwrt安装蒲公英_网速不给力?双宽带叠加,立马消除卡顿
  6. python3 内置方法
  7. 整型数据类型java_Java 六种基本整型数据类型变量的取值范围
  8. 1095.山脉数组中查找目标值
  9. 浪潮之巅-读书笔记一
  10. MySQL详细学习教程(建议收藏)
  11. mysql成绩是什么数据类型_mysql数据类型
  12. 基于ssm进销存流程管理系统
  13. cassandra 避免 allow filter 提升性能的方法
  14. FLINK提交任务的两种方式
  15. 前端如何修改网页的标题栏图标和名称
  16. spring-aop切面
  17. stata的固定效应,控制时间和个体的语句
  18. MATLAB 二维数组的行列操作
  19. MYSQL 5.7 普通表在线转分区表
  20. 造梦西游online十殿阎罗篇(下)(莫等闲,空悲切)

热门文章

  1. nVIDIA显卡命名规律
  2. Hyper-V实战:高可用性-网络规划篇(Hyper-V1.0)
  3. 【机器学习课程01】李宏毅2020年机器学习课程开课啦!!!
  4. 【计网】计网----子网掩码,网关,ARP协议的作用
  5. 【收藏】Kubernetes(十七) 基于NFS的动态存储申请
  6. scala 的39个关键字
  7. Git 忽略提交 .gitignore模板
  8. Scala 求三个数中的最大数代码示例
  9. redis set数据类型常用命令及应用场景
  10. Java中的同步集合与并发集合有什么区别?