• 线性表


    数据结构分为逻辑结构和物理结构,逻辑结构分为集合结构、线性结构、树形结构和图形结构四大类。物理结构分为顺序存储结构和链式存储结构

    线性表是线性结构的一种,那么线性表当然也有物理结构,分别对应两种物理结构,分别是顺序结构的线性表(叫做顺序表)和链式结构的线性表(叫做链表)。

    顺序存储结构的线性表(顺序表)

    顺序表是指顺序存储结构的线性表,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

    顺序表表现在物理内存中,也就是物理上的存储方式,事实上就是在内存中找个初始地址,然后通过占位的形式,把一定的内存空间给占了,然后把相同数据类型的数据元素依次放在这块空地中。注意,这块物理内存的地址空间是连续的。

    顺序表的封装需要三个属性:

    1.存储空间的起始位置。数组data的存储位置就是线性表存储空间的存储位置
    2.线性表的最大存储容量。数组长度MAXSIZE
    3.线性表的当前长度。length

    线性表的顺序存储结构,在存、读取数据时,不管是在哪个位置,时间复杂度都是O(1)。而在插入或者删除时,时间复杂度都是O(n)。

    优点:
    1.无需为了表示表中元素之间的逻辑关系而增加额外的存储空间(相对于链式存储而言)。
    2.可以快速的存取表中任意位置的元素。
    缺点:
    1.插入和删除操作需要移动大量的元素。
    2.当线性表长度变化较大时,难以确定存储空间的容量。
    3.容易造成存储空间的“碎片”(因为线性表的顺序存储结构申请的内存空间都以连续的,如果因为某些操作(比如删除操作)导致某个部分出现了一小块的不连续内存空间,因为这一小块内存空间太小不能够再次被利用/分配,那么就造成了内存浪费,也就是“碎片”)

    链式存储结构的线性表(单链表)

    链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。

    也就是说除了存储其本身的信息外,还需存储一个指示其直接后继的存储位置的信息。

    我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。

    指针域中存储的信息称为指针或链。

    这两部分信息组成数据元素称为存储映像,或称为结点(Node)。

    n个结点链接成一个链表,即为线性表(a1, a2, a3, …, an)的链式存储结构。

    因为此链表的每个结点中只包含一个指针域,所以叫做单链表。

    对于线性表来说,总得有个头有个尾,链表也不例外。我们把链表中的第一个结点的存储位置叫做头指针,最后一个结点指针为空(NULL)。

  • 相关阅读:
    ThreadLocal总结
    zookeeper学习笔记
    安装solr
    VirtualBox安装Centos7
    Solr学习
    Redis缓存会出现的问题?
    面试题目总结
    mysql分库分表
    Java内存模型
    HashMap在多线程中循环链表问题(jdk1.7)
  • 原文地址:https://www.cnblogs.com/ww11/p/9106511.html
Copyright © 2020-2023  润新知