数据结构自学快速总结

参考文档(有些随手查一两个名词的,未被记录,有遗漏):

数据结构与算法(java版)

霍夫曼树 和霍夫曼编码原理

30张图带你彻底理解红黑树 - 简书

 

1、数组

无序数组和有序数组

无序数组的优点:插入快,如果知道下标,可以很快的存取

无序数组的缺点:查找慢(挨个比对),删除慢,大小固定。

有序数组的优点:查找效率高(二分法)

有序数组的缺点:删除和插入慢(当插入一个元素时,首先要判断该元素应该插入的下标,然后对该下标之后的所有元素后移一位,才能进行插入),大小固定

2、栈

后进先出(只允许访问一个数据项:即最后插入的数据。移除这个数据项后才能访问倒数第二个插入的数据项

栈通常用于解析某种类型的文本串(如分隔符匹配)

3、队列

先进先出(栈的插入和删除数据项的命名方法很标准,成为push和pop,队列的方法至今也没有一个标准化的方法,插入可以称作put、add或enque等,删除可以叫作delete、get、remove或deque等

环绕式处理(让队尾指针回到数组的第一个位置),形成循环队列(也成为缓冲环)。虽然在存储上是线形的,但是在逻辑上它是一个首尾衔接的环形

双端队列(队列的每一端都可以进行插入和移除操作,是队列和栈的综合体。如果限制双端队列的一段只能插入,而另一端只能移除,就变成了平常意义上的队列;如果限制双端队列只能在一端进行插入和移除,就变成了栈

优先级队列(优先级队列有一个队头和一个队尾,并且也是从队头移除数据,从队尾插入数据,不同的是,在优先级队列中,数据项按关键字的值排序,数据项插入的时候会按照顺序插入到合适的位置通常使用一种称为的数据结构来实现

4、链表

插入和删除都比较快的数据结构,缺点是查找比较慢。

除非需要频繁的通过下标来随机访问数据,否则在很多使用数组的地方都可以用链表代替。

在链表中,每个数据项都包含在“链结点”中,一个链结点是某个类的对象。每个链结点对象中都包含一个对下一个链接点的引用,链表本身的对象中有一个字段指向第一个链结点的引用

单链表

链表的删除指定链结点,是通过将目标链结点的上一个链结点的ne

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值