单链表
单链表只有一个指向下一结点的指针,也就是只能next
双链表
双链表除了有一个指向下一结点的指针外,还有一个指向前一结点的指针,可以通过prev()快速找到前一结点,顾名思义,单链表只能单向读取
为什么市场上单链表的使用多余双链表呢?
从存储结构来看,每个双链表的节点要比单链表的节点多一个指针,而长度为n*length(这个指针的length在32位系统中是4个字节,在64位系统中是 8个字节)的空间,这在一些追求效率不高的应用下并不适应,因为它占用空间大于单链表所占用的空间;这时设计者就会采用以时间换取空间的做法,这是一种工程总体上的衡量标准。
链表的优点:
- 插入删除速度快(因为有next指针指向其下一个节点,通过改变指针的指向可以方便的增加删除元素)
- 内存利用率高,不会浪费内存(可以使用内存中细小的不连续空间(大于node节点的大小),并且在需要空间的时候才创建空间)
- 大小没有固定,拓展很灵活。
链表的缺点:
- 不能随机查找,必须从第一个开始遍历,查找效率低