谈谈你对Java数据结构的理解(数组、链表、队列、栈、堆、树、图)

一、数组

  • 数组存放在一块连续的内存空间中;

  • 由有限个相同类型的变量所组成的有序集合,按一定的顺序储存;

  • 查找速率快,利用索引的方式进行查找,第一的元素的索引为0,插入和删除的速率较慢,因为需要移动大量的节点;

  • 定义动态数组

  • 数组常用方法主要为增(add)删(remove)改(set)查(put)长度(size)

二、链表

  • 链表中的元素可存储在内存的任何地方(每个元素存储了下一个元素的地址),无序储存;

  • 插入和删除速率较快,但查找速率慢;

  • 在我们需要读取链表某一个元素的时候,不能直接读取,因为不知道它所处的地址,必须先访问第一个元素,从中获取第二个元素的地址,以此类推直到访问到该元素,所以效率很低;但需要同时读取所有元素时,链表的效率很好。

  • 可用于创建树

  • 常用方法用数组相似

三、队列

  • 队列是一种线性逻辑结构,可以用数组实现,也可以使用链表实现。

  • 队列包含入队和出队的事件,遵循先入先出的原则(FIFO)

  • 主要方法:

  • 增加add(),offer()
    取出头结点remove(),poll()
    获得头结点element()、peek()
    大小size()
    特点先进先出

四、栈

  • 栈是一种先进后出的数据结构,数组和链表都可以生成栈。当数据进入到栈时会按照规则压入到栈的底部,再次进入的数据会压在第一次的数据上面,以此类推。

  • 在取出栈中的数据的时候会先取出最上面的数据,所以是先进后出。

  • 由于数组和链表都可以组成栈,所以操作特点就需要看栈是由数组还是链表生成的了,然后就会继承相应的操作特点。

五、树

树是典型的非线性结构,在树的结构中,有且仅有一个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有一个前驱结点,而且可以有两个以上的后继结点

六、图

一种非线性结构。在图形结构中,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系堆

七、堆

堆是一种特殊的树形数据结构,每个结点都有一个值,特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值