美文网首页
2. 链式存储 --- 链表

2. 链式存储 --- 链表

作者: 執著我們的執著 | 来源:发表于2018-06-05 00:06 被阅读0次

    链表 :是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的;与顺序存储相比,链式存储结构方便实现数据的插入,删除等操作,但是不容易实现随机存取第 i 个数据元素的操作(需要从前往后遍历);So 对于经常是实现插入,删除操作的线性表,采用链式存储结构。


    对链表的基本操作
    • 初始化(空链)
    • 返回链表长度
    • 按序号取元素
    • 按值查找元素(返回位置信息)
    • 插入操作
    • 删除操作

    动态链表

    单链表 LinkList
    LinkList
    单循环链表 LinkListCy
    LinkListCy

    单循环链表:最后一个结点的Next指向头结点,由链表尾可以很容易找到链表头,由头找尾较费时。因此通常设置尾指针 Tail

    双向循环链表 DLinkList
    DLinkList
    前驱,后继,由头找尾 the same as 由尾找头,So 只要设置一个即可。
    不带头结点的链表

    不带头结点的链表看起来更自然一点,所有的结点都存数据,但是相对于带头结点的链表,不设置头结点的链表对 第 1 个 元素做插入、删除操作与其他结点不同,分开实现 !

    · 不带头结点的单链表 LinkListNH
    · 不带头结点的双向循环链表 DLinkListNH
    相关问题
    1. 约瑟夫环问题
      n个小孩围坐在一圈,由第 1 个小孩开始,依次报数。报到 m 的小孩出列,再从下一个小孩开始重新循环报数,直到所有的小孩出列,写出小孩出列的顺序。
      [分析] 围成一圈,报数后删除,用不设头结点的循环链表实现,执行删除操作即可


    静态链表

    顺序存储结构也可以实现链式存储功能。

    1. 首先,开辟一个充分大的结构体数组(静态分配存储空间)。
    2. 结构体的一个成员(data)存放数据元素,另一个成员(link)存放链表中下一个数据元素在数字中的位置(下标)

    通过记录下标而非指针的方式,在数组中实现链表的逻辑,这种方式称为静态链表。

    静态链表存储于结构体数组中,但是链表的输出却不是按照数组的顺序输出,是一个指定的位置开始根据link的值依次输出的。

    [注]
    静态链表(结构体数组)第一个元素的 link值 对应的下标元素作为链表的头,以 link = -1 作为其结束的标志。
    静态链表的插入、删除操作与动态链表相同,只需要修改指针,而不需要移动数据。总体来说,静态链表的使用没有单链表方便。

    [应用]
    静态链表在赫夫曼树与内部排序中都有应用;

    【代码后补】

    相关文章

      网友评论

          本文标题:2. 链式存储 --- 链表

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