CH4 链表1 - 链表基础

最基础的动态数据结构:链表

本章主要内容:
从底层实现单链表
并依托链表实现队列和栈,并对链表进行一些改进
=

链表

链表 : 是真正的动态数据结构
动态数组、栈(数组实现)、队列(数组实现):这三个底层都是依托静态数组,靠resize解决固定容量问题
栈(链表实现)、队列(链表实现):这两个底层依托动态链表,不需要resize了

线性数据结构: 数组、栈、队列、链表

链表的重要性:

链表是最简单的动态数据结构
我们后续还会学习的更高级的动态数据结构:二分搜索树(拓展后的平衡二叉树、AVL、红黑树),Trie
链表是学习更高级的数据结构的基础
链表可以使深入理解引用(指针)
链表本身也有清晰的递归结构,可以帮助理解递归机制

链表的功能:

可以组合成更复杂的数据结构:图、哈希表、栈和队列也可以用链表实现

链表LinkedList的结构:

数据存储在“节点”(Node)中:
e存储内容本身,而next又是一个node节点,指向的是当前节点的下一个节点的引用地址
class Node {
E e;
Node next;
}
最后一个节点的next存储的内容是空

链表的优缺点和使用

链表优点:真正的动态,不需要处理固定容量的问题
链表缺点:丧失了随机访问的能力,比如,数组给一个索引,立即拿出数据,但链表必须一个个next找到

数组最好用于索引有语义的情况,最大的优点是支持快速查询
但并不是所有数组都是有语义的,也不是所有有有语义的情况都适合数组,如身份证号

链表不适合索引有语义的情况
最大的优点:动态
要区分情况,适当选择用数组还是链表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值