zoukankan      html  css  js  c++  java
  • 学习笔记线性表

     线性表(linear list

               线性表是n个类型相同数据元素的有限序列,通常记作(a1,…,ai-1,ai,ai+1,…,an)。

      1.相同数据类型

        在线性表的定义中,线性表的n个数据元素具有相同的数据类型。

        比如都是数字,如(1,2,3,4,5);

        也可以都是字符,如(A,B,...,Z);

        还可以是具有更复杂结构的数据元素,如学生,图书,商品。

        相同的数据类型意味着在内存中存储时,每个元素会占用相同的内存空间,便于后续的查询定位。

      2.序列(有序性)

        在线性表的相邻数据元素之间存在着徐偶关系。

        即ai-1是ai的直接前驱,则ai是ai-1的直接后续,

        同时ai又是ai+1的直接前驱,ai+1是ai的直接后继。

        唯一没有直接前驱的元素a0一端称为表头,

        唯一没有直接后续的元素an一端称为表尾。

        除了表头和表尾元素外,任何一个元素都有且仅有一个直接前驱和直接后继。

      3.有限

        线性表中数据元素的个数n定义为线性表的长度,n是一个有限值。

        当n=0时线性表为空表。

        在非空的线性表中每个数据元素在线性表中都有唯一确定的序号,如a0的序号是0,ai的序号是i。

        在一个具有n>0个数据元素的线性表中,数据元素序号的范围是[0,n-1]。

     线性表的逻辑结构

    线性表的存储结构

      1.顺序表-------顺序存储结构

        

        特点:在内存中分配连续的空间,只存储数据,不需要存储地址信息,位置就隐含着地址。

        优点:

          1.节省存储空间,数据是连续存放的,命中率比较高。

          2.索引查找效率高,即一个结点对应一个序号,由该序号可以直接计算出结点的存储地址。

              假设线性表的每个数据元素需占用K个存储单元,并以元素所占的第一个存储单元的地址作为数据元素的存储地址。

              线性表的i号元素ai的存储地址为

                LOC(ai) = LOC(a0) + i*K

              其中LOC(a0)为0号元素a0的存储地址,通常成为线性表的起始地址。

        缺点:

          1.插入和删除操作需要移动元素,效率较低。

          2.必须提前分配固定数量的空间,如果存储元素少,可能导致空闲浪费。

          3.按照内容查询效率低,因为需要逐个比较判断。

        时间复杂度 :查找操作为O(1) ,插入和删除操作为O(n)。

      2.链表------链式存储结构

          

        特点:该线性表中的数据元素可以用任意的存储单元来存储。线性表中逻辑相邻的两元素的存储空间可以是不连续的。

          每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链接关系反映出来。

          逻辑上相邻的节点物理上不必相邻。

        优点:

          1.插入、删除灵活,不必移动节点,只需改变指针指向即可。

          2.不用事先开辟内存,有元素才会分配内存空间。

          3.内存利用率较高。

        缺点:

          1.比顺序存结构的存储密度小(需占用额外的空间存储指针,比较浪费空间)。

          2.查找结点时链式存储要比顺序节点慢(每个节点地址不连续,查找时需循环链表)。

        时间复杂度 :查找操作为O(n) ,插入和删除操作为O(1)。




    作者:殇央 © 转载请注明出处。

    -------------------------------------------

    如果有错误或者更优化的解决方案,欢迎大家在评论区留言探讨。

    也可以给我的个人公众号私信留言。

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

查看全文
  • 相关阅读:
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    C语言I作业12—学期总结
    C语言I作业11
    C语言I作业10
    C语言I作业09
    C语言I作业08
    C语言寒假大作战04
  • 原文地址:https://www.cnblogs.com/shangyang/p/10474812.html
  • Copyright © 2011-2022 走看看