• 数据结构之 线性表


    线性表是最基本、应用最广泛的一种数据结构。

    线性表的存储结构是指 为线性表所开辟的计算机存储空间以及采用的程序实现方法,其本质是逻辑结构到物理结构(存储结构)的映射。

    线性表的存储结构主要分为两类:

    1、定长的顺序存储结构,简称顺序表 

    2、变长的线性存储结构,简称链表(亦称链式存储结构)

      顺序表 链表
    定义

    顺序存储

    将线性表的所有数据元素,按其逻辑顺序依次存储在一组连续的内存单元中,

    用这种存储形式存储的线性表,称为线性表

    链接存储

    通过一组地址任意的存储单元来存储线性表中的数据元素,这些存储单元可以是连续的,

    也可以是不连续的,用这种存储形式存储的线性表,称为链表

    建立

    通过创建数组来建立,顺序表中的每个数据元素按其顺序有唯一的索引值,

    又称下标值,可以方便地访问数据元素内容

    从空表开始,每读入一个数据元素就申请一个相应的存储单元,对于每一个数据元素ai

    除了存放数据元素自身的数据信息外,还需要一个存放其直接后继ai+1的存储地址,

    其中存放自身数据的data称为数据域,存放直接后继地址的next称为指针域,这两部分构成一个“结点”。

    链表正是通过每一个结点的指针域,将线性表中的结点按其逻辑顺序依次连接在一起的

    内存分配方式

    (基于空间考虑)

    静态分配。程序执行前必须明确规定存储规模 动态分配。无需预先估计存储规模,可根据需要随时申请动态分配内存。

    存储密度

    (基于空间考虑)

    为1。易于事先确定其大小时,宜采用顺序表作为存储结构 <1。指针域占了部分存储量

    存取方法

    (基于时间考虑)

    随机存取结构。对表中任一结点都可在O(1)时间内直接取得。

    如果线性表的操作主要是进行查找,很少做插入和删除操作,

    应采用顺序表作为存储结构为宜

    顺序存取结构。

    链表中的结点需从头指针起,顺着链表扫描才能取得,其时间复杂度为O(n)

    插入、删除操作

    (基于时间考虑)

    在顺序表中进行插入和删除,平均要移动表中近一半的结点,

    尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观了,

    其时间复杂度为O(n) 

    在链表中的任何位置上进行插入和删除,都只需要修改指针。

    对于频繁进行插入和删除的线性表,宜采用链表作为存储结构。

    如果表的插入和删除主要发生在表的首尾两端,则最好采用尾指针表示的单循环链表。

    存储密度:结点数据本身所占的存储量和整个结点结构所占的存储量之比

    即存储密度 = (结点数据本身所占的存储量)/(结点结构所占的存储总量)、

    存储密度越大,则存储空间的利用率就越高

    共同学习,共同进步,若有补充,欢迎指出,谢谢!

  • 相关阅读:
    乱七八杂
    转化跟踪设置说明
    Photoshop图象切片保存为网页HTML(DIV+CSS布局)的方法
    HTTP 错误 403.14
    打开asp出现An error occurred on the server when processing the URL
    ADODB.Connection 错误 '800a0e7a'
    修改客户端连接的服务器IP地址(内部使用)
    关于云计算的10个常见问题解答
    云安全的11个挑战及应对策略
    如何鉴别一个区块链项目的真假?
  • 原文地址:https://www.cnblogs.com/dengguangxue/p/10764930.html
Copyright © 2020-2023  润新知