看图轻松理解数据结构与算法系列(单向链表)

前言

推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各类堆、各类队列、各类列表、各类树、各类图、各类排序等等几十篇的样子。mysql

单向链表

单向链表属于链表的一种,也叫单链表,单向便是说它的连接方向是单向的,它由若干个节点组成,每一个节点都包含下一个节点的指针。算法

单链表特色

  • 建立单链表时无需指定链表的长度,这个比起数组结构更加有优点,而数组纵使实现成动态数组也是须要指定一个更大的数组长度,并且要把原来的数组元素一个个复制到新数组中。
  • 单链表中的节点删除操做很方便,它能够直接改变指针指向来实现删除操做,而某些场景下数组的删除会致使移动剩下的元素。
  • 单链表中的元素访问须要经过顺序访问,即要经过遍历的方式来寻找元素,而数组则可使用随机访问,这点算是单链表的缺点。

单链表建立

建立一个空链表,sql

image

插入链尾

nobody grows old merely by a number of years这些单词按顺序分别插入尾部,建立“nobody”节点,数组

image

链接起来,网络

image

继续建立“grows”节点,数据结构

image

再链接起来,并发

image

以此类推,将剩下的分别建立节点并链接起来。机器学习

image

image

建立迭代器

迭代器的 current 指针初始指向head,数据结构和算法

image

执行两次 next 操做, current 指针指向索引为2的节点,学习

image

此时的节点值为,

image

设置 current 指针指向索引为4的节点,

image

插入节点

在索引1后面插入“but”和“someone”两个节点。先将 current 指针指向索引为1的节点,建立一个"but"新节点,

image

插入到 current 指向位置,

image

执行 next 操做,

image

建立一个"someone"新节点,

image

插入到 current 指向位置,

image

删除节点

将“but”和“someone”两个节点删除,先删除“but”节点,

image

image

删除“someone”节点,

image

image

-------------推荐阅读------------

个人开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为何写《Tomcat内核设计剖析》

个人2017文章汇总——机器学习篇

个人2017文章汇总——Java及中间件

个人2017文章汇总——深度学习篇

个人2017文章汇总——JDK源码篇

个人2017文章汇总——天然语言处理篇

个人2017文章汇总——Java并发篇


跟我交流,向我提问:

欢迎关注:

相关文章
相关标签/搜索