Java学习笔记——简述数据结构(堆栈\队列\数组\链表\树)

Java基本数据结构(堆栈\队列\数组\链表\树)

Java中提供了很丰富的容器技术,这些容器技术在底层都是通过各种各样的数据结构来实现的。

下面列出了几个 常见的数据结构,简单的做一下了解

  • 栈:stack,又称为堆栈,它是运算受限的线性表,其限制是仅允许在栈的一端进行插入和删除操作,不允许在其它任何位置进行添加、查找、删除等
  • 该结构的集合的特点:
    • 先进后出(先存进去的元素,要在它后面的的元素都取出后才能取出,就像子弹夹)
  • 压栈(push):存元素。
  • 弹栈(pop):取元素。

队列

  • 队列:queue,简称队,它和堆栈一样,也是一种运算受限的线性表,其限制是仅允许在队列的一端插入,在另一端删除
  • 该结构的集合的特点:
    • 先进先出(后存进去的元素,要在它前面的元素都取出后才能取出,就像火车过隧道)
  • 队列的入口、出口各占一侧
  • 队列还分为单项有序队列、双向队列阻塞队列

数组

  • 数组:Array:是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素,每一个元素都有自己的编号,通过编号就能快速的操作元素
  • 该结构的集合的特点:
    • 查找元素快。通过索引可以快速访问指定位置上的元素
    • 增删元素慢。当指定索引要添加元素时,需要创建一个新的数组,将指定的新元素存储在指定的位置,再把原数组中的元素根据索引复制到新数组的指定位置上

链表

  • 链表:linked list。由一系列的节点node组成,节点可以在运行时动态生成,每个节点包括两个部分,一个存储数据的数据域,另一个是存储下一个节点地址的指针域。
  • 该结构的集合的特点:
    • 多个结点之间,通过地址进行连接。(多个人手拉手,每个人使用自己的右手拉住下个人的左手,以此类推,这样多个人就连在一起了)
    • 查找元素慢,想查找某个元素,需要通过连接的结点,依次向后查找指定元素
    • 增删元素快,只需要修改连接下个元素的地址即可
  • 常说的链表接口有单项链表和双向链表,双向链表就是在单线链表的基础上,在开头位置,增加了一个存储上一个节点地址的指针域。

  • 由n个节点组成的具有层次关系的集合(看起来像一个树,由一个根节点,向外开枝散叶)

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

    • (简单的理解,就是一种类似我们生活中的树结构,只不过每个结点上都最多只能有两个子节点)
    • 二叉树是每个结点最多有两个子节点的树结构,顶上的叫根结点,两边的称作左子树和右子树
  • 我们说的二叉树的一种比较有意思的叫做红黑树,红黑树本身就是二叉树,也意味着,存放的数据必须是可排序的

  • 红黑树通过红黑标记和左右旋转规则来保证了二叉树平衡

  • 红黑树的特点:

    • 每个节点不是红就是黑,根节点是黑
    • 一个红的节点,它的两个子节点一定是黑的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值