美文网首页
数组、单链表和双链表

数组、单链表和双链表

作者: async丶 | 来源:发表于2019-11-25 14:43 被阅读0次

    线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。

    数组

    数组有上界和下界,数组的元素在上下界内是连续的。
    存储10,20,30,40,50的数组的示意图如下:


    数组储存

    数组的特点是:数据是连续的;随机访问速度快
    数组中稍微复杂一点的是多维数组和动态数组。对于C语言而言,多维数组本质上也是通过一维数组实现的。至于动态数组,是指数组的容量能动态增长的数组;对于C语言而言,若要提供动态数组,需要手动实现;而对于C++而言,STL提供了Vector;对于Java而言,Collection集合中提供了ArrayList和Vector。

    单链表

    单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针。


    单链表示例

    表头为空,表头的后继节点是"节点10"(数据为10的节点),"节点10"的后继节点是"节点20"(数据为10的节点)

    • 单向链表删除节点


      单链表删除节点

      删除"节点30"
      删除之前:"节点20" 的后继节点为"节点30",而"节点30" 的后继节点为"节点40"。
      删除之后:"节点20" 的后继节点为"节点40"。

    • 单链表增加节点


      单链表增加节点

      在"节点10"与"节点20"之间添加"节点15"
      添加之前:"节点10" 的后继节点为"节点20"。
      添加之后:"节点10" 的后继节点为"节点15",而"节点15" 的后继节点为"节点20"。

    单链表的特点是:节点的链接方向是单向的;相对于数组来说,单链表的的随机访问速度较慢,但是单链表删除/添加数据的效率很高

    双向链表

    双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。


    双链表示例图

    表头为空,表头的后继节点为"节点10"(数据为10的节点);"节点10"的后继节点是"节点20"(数据为10的节点),"节点20"的前继节点是"节点10";"节点20"的后继节点是"节点30","节点30"的前继节点是"节点20";...;末尾节点的后继节点是表头。

    • 双链表删除节点


      双链表删除节点

      删除"节点30"
      删除之前:"节点20"的后继节点为"节点30","节点30" 的前继节点为"节点20"。"节点30"的后继节点为"节点40","节点40" 的前继节点为"节点30"。
      删除之后:"节点20"的后继节点为"节点40","节点40" 的前继节点为"节点20"。

    • 双链表增加节点


      双链表增加节点

    在"节点10"与"节点20"之间添加"节点15"
    添加之前:"节点10"的后继节点为"节点20","节点20" 的前继节点为"节点10"。
    添加之后:"节点10"的后继节点为"节点15","节点15" 的前继节点为"节点10"。"节点15"的后继节点为"节点20","节点20" 的前继节点为"节点15"。

    出处http://www.cnblogs.com/skywang12345/p/3561803.html

    相关文章

      网友评论

          本文标题:数组、单链表和双链表

          本文链接:https://www.haomeiwen.com/subject/xhtjwctx.html