zoukankan      html  css  js  c++  java
  • 线性表的链式存储结构

    链式存储结构的定义

     1.概念定义:

        - n个结点离散分配

        - 彼此通过指针相连

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

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

     2.专业术语

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

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

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

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

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

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

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

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

      4.分类

        1.单链表

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

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

        4.非循环链表

      5.算法

        1.遍历

        2.查找

        3.清空

        4.销毁

        5.求长度

        6.排序

        7.删除节点

        8.插入节点

      6.算法

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

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

    复习:

      数据结构:

        侠义:

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

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

        广义:

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

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

      算法:

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

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

           这就是泛型思想

       数据的存储结构有几种:

          线性:

            连续存储(数组)

              优点:存取速度很快,

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

                 空间通常有限制

                 事先必须知道数组的长度

                 需要大块连续的内存块

                 

            离散存储(链表)

              优点:空间没有限制

                 插入以及删除元素速度快

              缺点:

                  存取的速度较慢

            线性结构的应用:

              栈

              队列

      

          非线性:

            树

            图

      

        

  • 相关阅读:
    Oracle Dataguard管理命令(logical standby)
    RAC 主库配置单实例ADG
    基于参数shared_pool_reserved_size进一步理解共享池shared pool原理
    线性表的本质和操作
    类族结构的进化
    顶层父类的创建
    异常类的构建——5个子类构建
    异常类的构建——顶层父类Exception的实现
    智能指针示例
    泛型编程简介
  • 原文地址:https://www.cnblogs.com/strator/p/7228125.html
Copyright © 2011-2022 走看看