线性表的链式存储结构

链式存储结构的定义

 1.概念定义:

    - n个结点离散分配

    - 彼此通过指针相连

    - 每个结点只有一个前驱结点和一个后继结点

    - 首结点没有前驱结点,尾结点没有后继结点

 2.专业术语

    -首结点:第一个有有效数据的结点

    -尾结点:最后一个有有效数据的结点

    -头结点:第一个有效结点之前的那个结点,头结点并不存放有效数据,加头结点的目的主要是为了方便对链表的操作,头结点的数据类型和首结点的类型一致

    -头指针:指向头结点的指针变量

    -尾指针:指向尾结点的指针变量

 3.确定一个链表需要几个参数(也就是获得链表的所有信息)

    只需要 头指针 这个参数,因为我们通过头指针可以推算出链表的其他所有信息

     PS:free(p) p是一个指针域,就是释放p所指向的结点所占的内存,而不是释放他本身所占的内存

  4.分类

    1.单链表

    2.双链表:每一个结点有两个指针域

    3.循环链表:能通过任何一个结点找到其他所有的结点

    4.非循环链表

  5.算法

    1.遍历

    2.查找

    3.清空

    4.销毁

    5.求长度

    6.排序

    7.删除节点

    8.插入节点

  6.算法

    狭义的算法是以数据的存储方式密切相关的,广义的算法是与数据的存储方式无关

    泛型:利用某种技术达到的效果就是:不同的存储方式,执行的操作是一样的。

复习:

  数据结构:

    侠义:

      数据结构是专门研究数据存储的问题

      数据的存储包括两方面:个体的存储 + 个体关系的存储

    广义:

      数据结构既包括数据的存储也包括数据的操作    

       对存储数据的操作就是算法

  算法:

    侠义:算法是和数据的存储方式密切相关

    广义:算法和数据的存储方式无关

       这就是泛型思想

   数据的存储结构有几种:

      线性:

        连续存储(数组)

          优点:存取速度很快,

          缺点:插入以及删除速度较慢

             空间通常有限制

             事先必须知道数组的长度

             需要大块连续的内存块

             

        离散存储(链表)

          优点:空间没有限制

             插入以及删除元素速度快

          缺点:

              存取的速度较慢

        线性结构的应用:

          栈

          队列

  

      非线性:

        树

        图

  

    

原文地址:https://www.cnblogs.com/strator/p/7228125.html