作业帮 > 数学 > 作业

什么是表的物理顺序和逻辑顺序?二者有何区别?

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:数学作业 时间:2024/04/28 03:10:16
什么是表的物理顺序和逻辑顺序?二者有何区别?
什么是表的物理顺序和逻辑顺序?二者有何区别?
1、线性表的逻辑结构的基本特征
  图2-1 线性表
  线性结构是一个数据元素的有序(次序)集
  1).集合中必存在唯一的一个“第一元素”;
  2).集合中必存在唯一的一个“最后元素”
  3).除最后元素之外,均有唯一的后继;
  4).除第一元素之外,均有唯一的前驱.
  2、线性表的顺序存储实现
  顺序表是线性表的顺序存储结构.用一组地址连续的存储单元依次存储线性表的元素.
  顺序表特点:
  逻辑顺序与物理顺序一致
  属随机存取的存储结构,即存取每个元素所花时间相等
  假设线性表中每个元素需占用c个存储单元,计算结点存储地址公式:
  LOC(ai+1)=LOC(ai)+c (1)
  LOC(ai)=LOC(a1)+(i-1)*c (2)
  顺序表上实现基本运算及时间复杂度分析.
  1)插入算法:
  假设在第 i 个元素之前插入的概率为 pi,则在长度为n的线性表中插入一个元素所需移动元素次数的期望值为:
  若假定在线性表中任何一个位置上进行插入的概率都相等,则移动元素的期望值为:
  插入算法的平均时间复杂性为 ,平均时间复杂性量级为O(n).
  2)删除算法:
  假设删除第 i 个元素的概率为qi ,则在长度为n的线性表中删除一个元素所需移动元素次数的期望值为:
  若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:
  删除算法的平均时间复杂性为
,平均时间复杂性量级为O(n).
  3、线性表的链式存储实现
  链接实现线性表,可以克服顺序表的缺点.线性表的常见链式存储结构有:单链表、循环链表、双链表.
  1)单链表
  用一组地址任意的存储单元存放线性表中的数据元素.
  元素(数据元素的映象)+ 指针(指示后继元素存储位置的) = 结点
  链式存储特点:
逻辑顺序与物理顺序有可能不一致
属顺序存取的存储结构,即存取每个数据元素所花费的时间不相等
  几种运算在单链表上的实现,包括:建立单链表、查找、插入、删除等.
  2)循环链表
  表中最后一个结点的指针域指向头结点,链表形成一个环.
  特点:从表中任何一个结点出发可扫描整个链表中的所有结点.
  3)双链表
  特点:每个结点有两个指针域,克服单链表的单向性
  注意:“插入”、“删除”操作,与单链表有很大不同.需要同时修改两个方向上的指针.
  4、顺序表和链表的比较
  空间性能比较、时间性能比较.
  顺序存储结构:
  优点:存储密度大、简单.数据元素的地址可以通过公式计算.
  缺点:插入、删除操作效率低,存储空间需要按最大需求事先分配,且要求一片连续的存储空间,容易造成浪费.
  链式存储结构:
  优点:存储空间按需分配;插入、删除操作效率高.
  缺点:链表中的结点需要存储指针,构造本身比顺序存储结构大.
  时间复杂性量级
  定位运算,顺序表和单链表,均为 O(n)
  读表元:顺序表-O(1) (随机存取);单链表-O(n)
  链入、删除:顺序表-0(n); 单链表-O(1) (插入、删除方便)