数据结构

参考:https://blog.csdn.net/yeyazhishang/article/details/82353846

总结
线性结构:栈(先进后出)、队列(先进先出);
数组结构:遍历查询快,如散列表(key/value访问,如拉链法)
链表结构:增删操作快;
树结构:大量动态数据操作,如二叉树(数组与链表结合)、堆(完全二叉树的数组对象);

*数组:存储结构连续
优点:有索引,查询、遍历快;
缺点:不能扩容,只能存储一种类型数据;添加或者删除操作慢;
使用场景:频繁查询,存储空间要求不大,很少增、删操作;

*栈:
特点:先进后出,后进先出;一种线性表,且只能从一端(栈底)操作;

*队列
特点:先进先出;一种线性表,一端放入元素,另一端取出元素
使用场景:多线程阻塞队列中非常适用;

*链表:
存储结构不连续,逻辑顺序是通过指针地址实现;每个元素包含两个结点,一个数据域(内存空间),一个指针域(指向下一个结点地址)
优点:不需要初始化容量,增删快;
缺点:占用空间大;查找元素非常耗时;
适用场景:数据量小,增删操作频繁;

*树:
每一个非根结点有且只有一个父结点;
每个子节点可以分为多个不相交的子树;
二叉树用得最多,还有很多二叉树的扩展如平衡而参数、红黑树、B+树等;

二叉树
左子树和右子树是有序的,次序不能颠倒;即使某个结点只有一个子树,也要区分左右子树。
优点:数组和链表的优点;
适用场景:大量动态数据;

*散列表,即哈希表
根据key、value直接访问数据结构;通过key得到数组下标;
基于数组衍生的数据结构,如数组加链表结构的拉链法;
应用场景多,问题也多,如哈希冲突,如果处理不好,耗时且导致应用崩溃;

*堆
可以看做一个树的数组对象;
堆中某个结点的值总是不大于(大堆顶)或者小于(小堆顶)父节点的值;
堆始终是一棵二叉树;

*图
图是由结点的有穷集合V和边的集合E组成;
有点类似树结构,分有向图和无向图,结点称为顶点为与树区分;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值