数据结构

1、数据结构有什么作用?

Java中提供了很丰富的容器技术,这些容器技术在底层都是通过各种各样的数据结构来实现的,只不过你在使用容器技术的时候不知不觉的就使用了。

现实生活中的存储,我们使用的工具和建模。每种数据结构都有自己的优点和缺点,想想如果百度的数据是用数组来存储的,我们还能方便的查询到所需要的数据吗?而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。

Java是面向对象的编程语言,就好似自动挡的车,C语言好似手动挡的车。数据结构呢?是变速箱的工作原理,你完全可以不知道变速箱怎么工作,就把自动挡的车从A点开到B点,而且未必就比懂得的人慢。写程序和开车一样,经验可以起到很大作用,但是如果你不知道怎么工作的,就永远只能开车,即不会修车,也不能造车。当然了,数据结构内容比较多,学起来也很费劲,需要一个过程。我们常见的数据结构:堆栈、队列、数组、链表和红黑树等,作为数据结构的入门。

2、常见的数据结构

数据存储的常用结构有:栈、队列、数组、链表、红黑树,我们分别来了解一下。

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

●简单的来说,采用该结构的集合,对元素的存储有如下特点:

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

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

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

队列

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

●简单来说,采用该结构的集合,对元素的存取有如下特点:
先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如:火车过山洞,车头先进,车尾后进;车头先出,车尾后出

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

数组

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

●简单的来说,采用该结构的集合,对元素的存取有如下特点:

  1. 查找元素快:通过索引,可以快速访问指定位置上的元素
  2. 增删元素慢:指定索引位置增加元素,需要创建一个新的数组,将指定的新元素存储在指定的位置,再把原数组中的元素根据索引,复制到新数组对应的位置上。

链表

链表:linked list 由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两部分:一个存储数据的数据域,另一个是存储下一个结点地址的指针域,我们常说的链表结构有单向链表和双向链表,那么这里我们研究单向链表。
在这里插入图片描述
简单的说,采用该结构的集合,对元素的存取特点如下:

  1. 多个结点之间,通过地址进行连接。例如:多个人手拉手,每个人使用自己的右手拉住下个人的左手,以此类推,这样多个人就连在一起了。
  2. 查找元素慢,想查找某个元素,需要通过连接的结点,依次向后查找指定元素
  3. 增删元素快
    3.1增加元素:只需要修改连接下个元素的地址即可
    3.2删除元素快:只需要修改连接下个元素的地址即可。

红黑树

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

●简单的理解,就是一种类似我们生活中的树结构,只不过每个结点上都最多只能有两个子节点。

●二叉树是每个结点最多有两个子节点的树结构,顶上的叫根结点,两边的称作左子树和右子树
在这里插入图片描述
我们说的二叉树的一种比较有意思的叫做红黑树,红黑树本身就是二叉树,也意味着,存放的数据必须是可排序的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值